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 :

Blocs de code incorporés dans dropdownlist


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Par défaut Blocs de code incorporés dans dropdownlist
    Bonjour à tous,

    Je voudrais incorporer un bloc de code dans une dropdownlist m'ai j'otiens une erreur
    Les blocs de code ne sont pas pris en charge dans ce contexte
    Je voudrais faire une boucle sur les Item d'une DropdownList:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    <asp:DropDownList ID="cbChoixCritSpec" runat="server">
                                                                                            <asp:ListItem Value=""></asp:ListItem>
             <%
              while (reader.Read()) {
              %>
               <asp:ListItem><%=(string)reader["ID"]%></asp:ListItem>
              <%
                }
              %>
                                                                                        </asp:DropDownList>
    Merci d'avance pour votre aide .

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bonjour,

    que cherches-tu à faire exactement ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Par défaut
    Bonjour,

    J'essaie de faire une boucle sur des ListItem d'un dropdownlist en fonction du résultat d'une requête SQL.

  4. #4
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Toujours pas compris

  5. #5
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Par défaut
    Désolé, je pensais avoir été clair,

    En fait voici mon code ajouter dans ma page .ASPX:

    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
    22
    23
    24
    25
    26
     
    System.Data.SqlClient.SqlDataReader reader = SqlCmd.ExecuteReader();
     if (reader.HasRows)
     {
     try
     {
    %>
    <tr>
    <td><%=(string)reader["CRS_lib"]%></td>
    <td>
    <asp:DropDownList ID="cbChoixCritSpec" runat="server">
    <asp:ListItem Value=""></asp:ListItem>
    <%
     while (reader.Read()) {
    %>         
    <asp:ListItem><%=(string)reader["ID"]%></asp:ListItem>
    <%
    }
    %>
    </asp:DropDownList>
    </td>
    </tr>
    <%
    }
    catch (Exception) { }
    finally{}
    reader me retourne un tableau, c'est le résultat d'une requête SQL qui le récupère des ID.

    Le but étant d'avoir un nombre de <asp:ListItem><%=(string)reader["ID"]%></asp:ListItem> que de résultat retourné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:dropdownlist runat="server">
     <asp:ListItem>ID1</asp:ListItem>
     <asp:ListItem>ID2</asp:ListItem>
     <asp:ListItem>ID3</asp:ListItem>
    ...
    ...
    ...
    </asp:dropdownlist>
    Dans une autre application en asp, j'effectue le même code en utilisant la balise select et option et je n'ai pas cette erreur.

    Je ne sais pas du tout si j'ai été plus explicite.

  6. #6
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Ben disons que le seul probleme que je vois c'est qu'il faut lire quelques tutoriaux de base en ce qui concerne l'ASP.NET. On ne s'improvise pas développeur.

    Tu binds directement ton reader sur ta dropdown en speficiant le DataValueField et le DataTextField et le probleme est résolu

  7. #7
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Par défaut
    Citation Envoyé par tortuegenie Voir le message
    Ben disons que le seul probleme que je vois c'est qu'il faut lire quelques tutoriaux de base en ce qui concerne l'ASP.NET. On ne s'improvise pas développeur.
    Pas constructif comme remarque !

    Mais bon ....merci quand même.

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Par défaut
    Si on est ici à demander ou lire des conseils ce n'est pas pour trouver des remarques condescandantes, on est la pour apprendre.

    On peux très bien être développeur, mais ne pas être développeur ASPX. Or, un développeur PHP n'a rien à voir avec un développeur C# par exemple.

    Merci d'être plus poli, plus compréhensif, et plus patient. Sinon inutile de répondre.

    -----------------

    Quant à la solution, il n'y en a pas si tu utilises le controle RadioButtonList (ou un autre du même genre) d'après mes quelques recherches, à moins de faire du code sale. Bon je n'y connais pas grand chose à l'ASPX mais en ce moment je dois maintenir un site dans cette techno.

    Je me suis retrouvé dans mon template avec le même texte dans le label et l'attribut title, pour chaque element de la liste.

    Comme les textes sont assez longs, je me suis dis que ce sera pas mal de les rentrer dans un tableau, et ainsi les appeler pour chaque élément.
    Résultat attendu : meilleure lisibilité du code, et meilleure maintenabilité quand il faudra modifier les textes.

    Sauf qu'apparament c'est pas possible ...

  9. #9
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par paolo2002
    Le but étant d'avoir un nombre de <asp:ListItem><%=(string)reader["ID"]%></asp:ListItem> que de résultat retourné.
    Citation Envoyé par Chicna
    Quant à la solution, il n'y en a pas si tu utilises le controle RadioButtonList (ou un autre du même genre) d'après mes quelques recherches, à moins de faire du code sale.
    Le code sale, il est là ! Je rejoins tout à fait tortuegenie : on ne s'improvise pas développeur !

    On a beau venir du monde PHP ou de Mars, il y a des principes basiques d'architecture à maîtriser un minimum. Là c'est du n'importe quoi : on appelle la DAL directement depuis l'UI. Bravo l'architecture !

    Il faut au moins passer par une liste intermédiaire, histoire de pouvoir faire les vérifications nécessaires (est-ce qu'on a récupéré les bonnes infos, si oui, effectuer d'éventuels traitements intermédiaires ou pas, si non, agir en conséquence).

    L'exemple que je vais donner reste simple en restant dans le concept de cette archi dégueu...

    On crée une structure pour recueillir les données, par exemple :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class DataItem
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    Ensuite on crée une liste de DataItems :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var myList = new List<DataItems>();
    Et on y insère les résultats du reader (c'est là où il faut faire une minimum de vérification sur les données reçues) :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while (reader.Read())
    {
        var dataItem = new DataItem()
        {
            Id = (reader[0] != DBNull.Value ? reader.GetInt32(0) : 0),
            Name = (reader[1] != DBNull.Value ? reader.GetString(1) : string.Empty)
        };
        myList.Add(dataItem);
    }
    Ensuite on peut binder la liste au control :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    this.myControl.DataTextField = "Name";
    this.myControl.DataValueVield = "Id";
    this.myControl.DataSource = myList;
    this.myControl.DataBind();
    Ca a au moins le mérite de répondre à la problématique, mais bon c'est dégueu si on l'applique tel quel.

    Pour faire les choses bien :
    - La lecture des données devrait se faire au sein de la DAL (Data Access Layer)
    - La classe DataItem devrait se trouver dans les DTO (Data Transfert Objects)
    - La List<DataItem> devrait être populée au sein du BL (Business Layer)
    - Le binding de la List<DataItem> sur le control devrait se faire dans l'UI (User Interface), c'est-à-dire dans le code behind (*.aspx.cs).

    D'où l'intérêt de lire un minimum les tutos, qu'on soit dév PHP ou autre.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Par défaut
    Bien sur qu'on ne s'improvise pas développeur, mais avec un problème ciblé et connu, on se tourne vers les moteurs de recherche, les forums, et non les tutos.

    Et quand bien même, la réponse typique "go voir les tutos" est déjà bien irrascible en elle même. Alors au moins un lien vers le soi disant tuto (parce que c'est bien joli de dire ça, mais si la recherche de tuto ne donne rien, les personnes comme moi qui viennent lirent ça sont...comment dire...très très déçues) ça pourrait être la moindre des choses, ou alors, comme tu l'as fait, une réponse un peu plus constructive. Merci pour ça !

    Quant au code, dégueu ou pas, c'est pas le débat. Moi mon code il est dégueu, mais je n'y suis pour rien, on m'a mis le projet entre les mains, et c'est tout. Les critiques virulentes de la part de pauvres petits développeurs expert outragé, on s'en passe !

    Alors merci de relativiser. Et remerci pour la réponse constructive, même si elle ne m'aide pas dans mon cas .

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

Discussions similaires

  1. Garder blocs de code dépliés dans l'affichage
    Par BnLucky dans le forum Visual Studio
    Réponses: 4
    Dernier message: 03/02/2012, 12h25
  2. Réponses: 5
    Dernier message: 08/01/2009, 13h45
  3. [VS2005]Masquer des blocs de code dans une fonction
    Par tomny dans le forum Visual Studio
    Réponses: 2
    Dernier message: 09/12/2008, 16h53
  4. [Forms 9i] Integrer du code java dans un bloc PL/SQL
    Par mohmanjdo dans le forum PL/SQL
    Réponses: 2
    Dernier message: 07/02/2006, 13h54

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