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

C# Discussion :

Recherche dans une combo multivaleurs


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut Recherche dans une combo multivaleurs
    Bonjour,

    J'ai créé une combo qui contient une liste de libellés, ainsi qu'un index associé (non affiché)

    Pour cela ma combo est initialisée avec de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MaCOMBO.DisplayMember = "Libelle";
    MaCOMBO.ValueMember = "IDRenvoye";
    Avec "Libelle" et "IDRenvoye" qui sont des membres de ma classe "LibComboWithId"


    L'ajout des valeurs se fait de la façon suivante (dans une boucle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MaCOMBO.Items.Add(new LibComboWithId(
        Convert.ToInt32(oDataSet.Tables[NomRequete].Rows[i]["Id"]),
        oDataSet.Tables[NomRequete].Rows[i]["Nom"].ToString()));
    Lors du raffaichissement des valeurs de ma combo, je veux pouvoir resélectionner la ligne précédement sélectionner. Mon code ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
    int IdSelectionne = ((LibComboWithId)MaCOMBO.SelectedItem).IDRenvoye;
     
    ...REQUETE...
     
    MaCOMBO.Items.Clear();
    for (int i = 0; i < oDataSet.Tables[NomRequete].Rows.Count; i++) {
       MaCOMBO.Items.Add(new LibComboWithId(
           Convert.ToInt32(oDataSet.Tables[NomRequete].Rows[i]["Id"]),
           oDataSet.Tables[NomRequete].Rows[i]["Nom"].ToString()));
    }
     
    MaCOMBO.SelectedValue=???????
    Je ne sais pas commemnt écrire cette dernière ligne. Il faudrait que je recherche à quel index de ma combo se trouve le ValueMember correspondant à "IdSelectionne", et je bloque...

    Quelqu'un à une idée ?

    merci et bonne journée,

    Aurélien

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Je penses qu'il faut faire une boucle, boucler sur tous les items que tu as ajouté et trouver celui qui était précédemment sélectionné via son IDRenvoye que tu as enregistré plus tôt (ou la valeur si le IDRenvoye est pas la valeur).

  3. #3
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Bonjour,

    Tu peux le faire au moment de l'alimentation de ta combo


    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
     
    int IdSelectionne = ((LibComboWithId)MaCOMBO.SelectedItem).IDRenvoye;
     
    ...REQUETE...
     
    MaCOMBO.Items.Clear();
    
    for (int i = 0; i < oDataSet.Tables[NomRequete].Rows.Count; i++) {
    
       MaCOMBO.Items.Add(new LibComboWithId(
           Convert.ToInt32(oDataSet.Tables[NomRequete].Rows[i]["Id"]), oDataSet.Tables[NomRequete].Rows[i]["Nom"].ToString()));
    
       If (IdSelectionne = Convert.ToInt32(oDataSet.Tables[NomRequete].Rows[i]["Id"])) {
          MaCOMBO.SelectedIndex = i
       }
    
    }
    
    

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    Je penses qu'il faut faire une boucle, boucler sur tous les items que tu as ajouté et trouver celui qui était précédemment sélectionné via son IDRenvoye que tu as enregistré plus tôt (ou la valeur si le IDRenvoye est pas la valeur).
    Effectivement... C'était tellement évident que j'étais passé à coté


    Citation Envoyé par Kelpan Voir le message
    Bonjour,

    Tu peux le faire au moment de l'alimentation de ta combo
    ...
    C'est vrai que c'est encore plus efficace!


    En fait, je débute avec le c# et je me demandais si il existait pas une méthode plus "élégante" pour effectuer une recherche dans une combo alimentée par une structure.
    quelquechose du même genre que MaCombo.FindString, mais sur un membre de structure...

    Bref, si quelqu'un a une idée, ca satisfera ma curiosité!

    En attendant, merci à vous pour vos solution qui fonctionnent très bien

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/02/2015, 17h53
  2. [WD17] Rechercher dans une table a partir d'un combo
    Par ameura1 dans le forum WinDev
    Réponses: 5
    Dernier message: 26/09/2014, 16h39
  3. [WD17] recherche dans une combo avec des suggestions
    Par ecoinfo dans le forum WinDev
    Réponses: 6
    Dernier message: 02/04/2013, 14h08
  4. Problème de recherche dans une BD
    Par ledevelopeur dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/04/2004, 09h49
  5. [BPW]Problème de recherche dans une boîte liste
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 05/07/2003, 15h10

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