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 :

C# - remplir une DropDownList via une List<classe> OK mais comment l'extraire après sélection ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 37
    Par défaut C# - remplir une DropDownList via une List<classe> OK mais comment l'extraire après sélection ?
    Bonjour,

    Prenons l'exemple d'une table client avec cli_id (clé), cli_nom, cli_pre...

    Je veux afficher mes clients dans une DropDownList et récupérer les infos après sélection.

    Je connais des techniques pour initialiser une DropDownList et récupérer sa valeur (cli_id) après sélection, sauf que j'ai besoin de récupérer les autres infos de mon client et je refais une requête SELECT avec mon info cli_id. Tout ceci afin d'avoir mon objet de type CLIENT au complet.

    J'ai vu un moyen d'initialiser mon DropDownList en affectant une méthode qui renvoie une List<Client>.

    Donc pour le chargement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    liste.DataSource = blabla.Instance.getListeClients();
    liste.DataValueField = "cli_id";
    liste.DataTextField = "cli_nom";
    liste.DataBind();
    ça c'est ok, par contre ma question :

    Comment fait-on si je veux récupérer ma sélection sous forme d'objet de type Client?

    liste.SelectedItem.Text et liste.SelectedItem.Value renvoie que 2 valeurs mais j'ai besoin du reste. Il doit bien avoir tout le contenu de List<Client> ?

    Merci pour vos réponses

    ps : je ne souhaite pas utiliser de composant ODS...

  2. #2
    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
    Bonjour,

    Dans une DropDownList, les objets sont de type ListItem. Impossible donc d'y faire transiter un objet complet, à moins de sérialiser l'objet, et de passer le code XML en tant que Value par exemple. Mais bon, je ne vois pas trop l'intérêt de faire ça.

    Dans un cas classique, une fois la ligne sélectionnée, il faut récupérer l'ID via la SelectedValue, puis récupérer l'objet correspondant dans la source de données.
    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.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 37
    Par défaut
    bonjour,

    j'ai compris qu'à moitié la réponse :

    - donc malgré qu'on initialise la DDL avec une liste d'objet. Le listitem ne peut retourner que le texte et la valeur. c'est bien ça

    - la solution : "récupérer l'objet correspondant dans la source de données."
    tu veux dire quoi? Il faut que je fasse une requête sql pour récupérer le reste? Ou bien je peux réexploiter "DataSource"?

    Je ne comprends pas ta solution?

    cdt

  4. #4
    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 arnovodao
    - donc malgré qu'on initialise la DDL avec une liste d'objet. Le listitem ne peut retourner que le texte et la valeur. c'est bien ça
    Exactement. Comme je l'ai mentionné, tu peux aussi mettre du XML dans la valeur, donc tu peux y mettre des données serialisées. Ensuit tu récupères la valeur et tu dé-serialises. Mais bon c'est lourd... Je trouve ça plutôt crade. L'usage veut que la valeur serve en général à stocker un ID.

    Citation Envoyé par arnovodao
    tu veux dire quoi? Il faut que je fasse une requête sql pour récupérer le reste? Ou bien je peux réexploiter "DataSource"?
    Tout dépend de ton application. Dans certains cas tu peux réutiliser ta DataSource, dans d'autres tu préfèreras aller requêter en DB directement, pour être sûr de travailler sur la dernière version par exemple...
    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.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 37
    Par défaut
    j'ai pris comme exemple "client" mais en faite mes DDL sont des données de références comme (Madame/monsieur...)

    Jusqu'à maintenant, j'initialise ma DDL avec une requête sql. Dans le cas d'un action je voulais éviter de retourner en base pour recompléter la même info.

    S'il n'y a pas le choix je ne suis pas à une requête sql prêt.
    L'idée du xml : pas interessé
    Exploiter le datasource c'est une piste mais je ne sais pas le manipuler.

  6. #6
    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
    Ca dépend de ce que tu veux faire avec ta drop down list Donne-nous un scénario concret et tu auras une réponse plus concrète !

    Là je me fie à ce que tu as donné dans ton premier message (get list clients). Si tu arrives à définir un peu plus explicitement ce que tu veux faire, on pourra te donner des informations plus adaptées.
    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.

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

Discussions similaires

  1. [Débutant] Récupérer une valeur d'une combobox via une SortedList
    Par smurfing dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/03/2013, 13h32
  2. Ajouter une colonne dans une table via une requête
    Par Alien_psy dans le forum Requêtes et SQL.
    Réponses: 25
    Dernier message: 23/02/2013, 05h24
  3. Modifier le style d'une page dans une frame via une autre frame
    Par Menontona dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/12/2011, 18h54
  4. [AC-2003] Lier les tables d'une Base1 dans une Base3 via une Base2
    Par ted the Ors dans le forum VBA Access
    Réponses: 0
    Dernier message: 30/12/2009, 11h58
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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