none
listbox RRS feed

  • Question

  • salut à tous,

    j'ai un petit problème pour l'acces à ma table avec un listbox. en effet cette listbox à choix multiple contient les élements de le prémière colonne de matable. comment faire donc quand l'utilisateur choisit plusieurs items et afficher les résultats des lignes choisies dans une datagrid.

    j'ai essayé cette requete:"select * from matable where colonne1 in(listbox.selecteditems) mais cela ne marche pas.

    quelqu'un a-t-il une idée?

    merci

    mardi 17 octobre 2006 06:37

Réponses

  • Salut,

    Dans ta requête SQL, le mot clé "in" doit contenir une liste de valeurs séparées par des virgules. Il faut donc faire deux choses:

    - récupérer la liste de valeurs

    - créer une chaîne contenant toutes ces valeurs séparées par des virgules

     

    Pour la première étape, cela dépend de ce que tu as mis comme valeurs dans le ListBox, mais je suppose que ce sont des chaînes. Du coup, listBox.SelectedItems renvoie une collection de Strings. Pour transformer cette collection en une liste de valeurs séparées ar des virgules, tu peux utiliser la méthode String.Join() qui prend un String[] en paramètre.

     

    Le résultat devrait ressemble à cela:

    string[] valeurs = new string[listBox.SelectedItems.Count];

    listBox.SelectedItems.CopyTo(valeurs, 0); // Seulement possible si tu as ajouté des String à ta ListBox

    sql = String.Concat("select ... in (", String.Join(", "), ")" );

     

     

    lundi 30 octobre 2006 19:33
  • Salut,

    Si vous tombez sur cette page, il y a une p'tite boulette, manque le deuxième paramètre pour Join() :

    sql = String.Concat("select ... in (", String.Join(", ", valeurs), ")" );

    PP
    lundi 9 juillet 2007 12:37

Toutes les réponses

  • Salut,

    Dans ta requête SQL, le mot clé "in" doit contenir une liste de valeurs séparées par des virgules. Il faut donc faire deux choses:

    - récupérer la liste de valeurs

    - créer une chaîne contenant toutes ces valeurs séparées par des virgules

     

    Pour la première étape, cela dépend de ce que tu as mis comme valeurs dans le ListBox, mais je suppose que ce sont des chaînes. Du coup, listBox.SelectedItems renvoie une collection de Strings. Pour transformer cette collection en une liste de valeurs séparées ar des virgules, tu peux utiliser la méthode String.Join() qui prend un String[] en paramètre.

     

    Le résultat devrait ressemble à cela:

    string[] valeurs = new string[listBox.SelectedItems.Count];

    listBox.SelectedItems.CopyTo(valeurs, 0); // Seulement possible si tu as ajouté des String à ta ListBox

    sql = String.Concat("select ... in (", String.Join(", "), ")" );

     

     

    lundi 30 octobre 2006 19:33
  • Salut,

    Si vous tombez sur cette page, il y a une p'tite boulette, manque le deuxième paramètre pour Join() :

    sql = String.Concat("select ... in (", String.Join(", ", valeurs), ")" );

    PP
    lundi 9 juillet 2007 12:37