IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Datalist avec pour source une procédure stockée ne renvoyant pas d'enregistrements.


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 60
    Points : 36
    Points
    36
    Par défaut Datalist avec pour source une procédure stockée ne renvoyant pas d'enregistrements.
    Bonjour,

    2 questions qui découlent l'une de l'autre :

    1°) comment dans un "datalist" avec un "DataSourceID" basé sur une Procédure stockée faire apparaître le label, ici nommé "LabelValeurEcran" avec par exemple le texte "aucun" si la procédure stockée ne ramène aucun enregistrement.
    En effet dans ce cas la partie <HeaderTemplate> du datalist apparait bien mais pas la partie <ItemTemplate> ce qui est normal puisqu'il n'y a pas d'enregistrement.

    J'ai essayé dans le codebehind de traiter les évènements "ItemDataBound", "itemCreated","init", "load" et "prerender" du "datalist" mais je ne peux atteindre ce label quand la procédure stockée ne renvoie aucun enregistrement, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim etat As Label = CType(e.Item.FindControl("Ecran"), Label)
     If etat IsNot Nothing Then
       etat.Text = "aucun"
     End If
    mais ce code fonctionne très bien dès qu'il y a au moins un enregistrement de retourné par la procédure stockée.

    Voici le code de la partie "datalist"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <asp:SqlDataSource runat="server" ID="dsEcran" ConnectionString="<%$ ConnectionStrings:csServeurProd %>" 
                   SelectCommand="MonitoringEcran" SelectCommandType="StoredProcedure" InsertCommandType="Text" >
     <SelectParameters>
       <asp:Parameter Name="dateDebut" Type="String" />
       <asp:Parameter Name="dateFin" Type="String" />
       <asp:Parameter DefaultValue="" Direction="InputOutput" Name="acces" Type="Int32" />
     </SelectParameters>
    </asp:SqlDataSource>
     
     
    <asp:DataList ID="DataListEcran" runat="server" DataSourceID="dsEcran" >
     <HeaderTemplate>
      <asp:Label ID="LabelTitreEcran" runat="server" Text="Ecrans" Width="220" >
      </asp:Label>
     </HeaderTemplate>
     <ItemTemplate>
      <asp:Label ID="LabelValeurEcran" runat="server" Text='<%# Eval("Ecran") %>' Width="90" >
      </asp:Label>
     </ItemTemplate>
    </asp:DataList>
    2°) n'y arrivant pas j'ai ajouté dans ma procédure stockée un paramètres @acces qui me retourne le chiffre 0 s'il n'y a pas de lignes de retournées qui correspond ici à "<asp:Parameter DefaultValue="" Direction="InputOutput" Name="acces" Type="Int32" />" mais je ne sais ni récupérer cette info ni où l'a traiter pour faire apparaître le label, ici nommé
    "LabelValeurEcran" avec par exemple le texte "aucun".

    D'avance merci de vos réponses.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Points : 295
    Points
    295
    Par défaut
    Pourquoi tu ne compte pas le nombre d'enreg de ton datalist...

    tu fais un truc du genre ( je le met en C#)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Datalist.databind();
    if (Datalist.Row.count == 0)
    {
        Datalist.Row.add(me rapelle plus la syntaxe exacte);
        // Tu fais le add de l'élément qui t'intéresse a la main
     
    }

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bonne idée P_medhi, le test préalable est bien .

    Maintenant (désolé, j'ai pas la synatxe non plu en tête) il existe une truc dans les contrôles de ce type : c'est un truc qui prend en compe le fait que le jeux d'enregistrmente (proc stock ou autre) soit vide.

    ça parle de "Empty data" ou un truc dans ce genre là

    Si je retrouve, je te fais signe
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 60
    Points : 36
    Points
    36
    Par défaut
    Bonsoir et merci,

    j'ai adapté votre idée de la manière suivante ce qui pourra aider d'autres personnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <FooterTemplate>
    <asp:Label ID="LabelVide" Text="aucun" runat="server" Visible='<%# boolean.Parse((DataListEcran.Items.Count=0).ToString())%>'  ></asp:Label>
    </FooterTemplate>
    et pour ma culture personnelle savez-vous comment récupérer la valeur du paramètre retournée par la procédure stockée ?

    et encore merci

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Points : 295
    Points
    295
    Par défaut
    Tu déclare un sqlparameter en modifiant sa direction..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameter.direction = output

  6. #6
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Désolé de te contredire de si bon matin p_medhi, mais je pense que ce n'est pas de cela dont veut parler prady92.

    Prady92, est ce que tu parles de récupérer un résultat de la proc stock elle même ou un paramettre qu'elle pourrait renvoyer ?

    Parce qu'il faut faire une différence entre les deux et je ne sais pas trop si une proc stock peut renvoyer un jeu d'enregistrement ET un parametre.
    Toutefois, je sais quu'n proc stock peut prend rene en parametre dans sa déclaration un truc qui fait "OUTPUT @param type de donnée" Mais ensuite, je ne me rappelle plus de la syntaxe. Et là, tu utilise ce que p_medhi te donne.

    Si c'est autre chose, dis le nous.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 60
    Points : 36
    Points
    36
    Par défaut
    Bonsoir,

    zooffy, je confirme qu'une procédure stockée peut à la fois renvoyer les résultats d'une requête ET un paramètre, déjà dès SQL 2000 on pouvait le faire;

    j'ai déjà déclaré le paramètre (voir mon code <asparameter DefaultValue="" Direction="InputOutput" Name="acces" Type="Int32" /> lors du premier message), ce que je ne sais pas faire c'est comment récupérer le contenu de ce paramètre "acces" en ASP.NET VB

    D'avance merci

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ben malheureusement, je ne vais pas pourvoir t'aider sur ce coup là, aprce que j'en sais rien non plus.

    Mais avec le parameter.direction = output, tu devrais avoir un début de piste, non ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD16] Connexion SQL SERVEUR pour exécuter une procédure stockée
    Par philippe30 dans le forum WinDev
    Réponses: 10
    Dernier message: 17/10/2023, 20h54
  2. Problème avec retour d'une procédure stockée
    Par jomphh dans le forum Deski
    Réponses: 22
    Dernier message: 21/11/2007, 23h57
  3. problème pour créer une procédure stockée
    Par PoichOU dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 06/09/2007, 09h58
  4. Besoin d'aide pour faire une procédure stockée
    Par PoichOU dans le forum SQL
    Réponses: 17
    Dernier message: 30/04/2007, 17h55
  5. Debuger une procédure stockée en mode pas à pas
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/12/2004, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo