Listbox dans un winform

Résolu
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006 - 25 mai 2005 à 16:59
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006 - 27 mai 2005 à 14:34
bonjour à tous
une question toute bête mais je ne trouve pas ...
j'ai une listebox basée sur un bindingsource
je veux afficher plusieurs colonnes dans cette liste. mais il ne m'en affiche qu'une.
j'ai mis la propriété "multicolumn" à true
j'ai essayé de mettre une chaine de caractère sur displaymember pour lui dire d'afficher plusieurs champs mais ça ne marche pas ...
pour éviter que je perde des heures, quelqu'un pourrait me filer la soluce please ?
elo

et autre question au passage : je suppose qu'il est possible d'afficher dans un combobox basé sur un bindingsource en plus des données une ligne vierge. mais comment fait-on ?

11 réponses

cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
27 mai 2005 à 13:23
c'est listview.hideselection à mettre à false

mais je l'ai jamais vraiment utilisé

@+
LIM
3
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
25 mai 2005 à 17:14
Salut

une listbox et uni colonne tu ne peux pas en mettre plusieures.
utilise une listeview pour avoir plusieurs colonne. une autre solution est de mettre deux listbox à coté mais après le problème c'est qu'on ne peut pas gèrer les ascenseurs ensemble.

pour ce qui est du champ vide il faut qu'il soit dans ta base ou bien que tu l'ajoute manuellement à ton combo

combo.items.add(" ") (! .net)

@+
LIM
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
25 mai 2005 à 17:50
alors j'ai plusieurs questions :!

la première, pour le remplissage manuel, pas de soucis. la seule chose, c'est que je souhaite envoyer deux données à ma liste : cellle affichée et celle de référence pour la valeur. comment faire, vu que la fonction items.add ne permet le passage que d'une valeur

deuxième question : concernant le listview, je ne vois pas comment le rattacher à ma source de données ...

je sais, je suis nulle !!
mais bon ça devrait aller vite, je connais access sur le bout des doigts ...
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
27 mai 2005 à 09:36
Tu developpe en koi Access ou vb ?
Je connais pas du tout acces mais seulement vb.net

En .net tu peux associer deux champs à une combobox (valuemenber) et (displaymenber) (en vb6 ou access je sais pas) par contre seule displaymenber est visible.

sinon tu peut faire
combo.items.add("1er Date" & " " & "2èmeDate")

pour la listeview moi je la remplis à la main
je fais une requete sql et je toune en boucle tant qu'il y a qquechose à afficher

en espérant que çà t'aide à avancer

@+
LIM
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
27 mai 2005 à 11:18
salut,
je développe en vb.net, c'est la dessus que j'ai des questions
bon j'ai avancé depuis la dernière fois.

plusieurs choses :
concernant les combos, si je les remplis à la main parce que j'ai une lsite de valeurs fixes, et que je remplis directement la propriété items, je n'arrive pas à lui spécifier deux colonnes : une pour la value et l'autre pour le display.
2ème chose, si je le fais par le code en utilisant combo.items.add(), je ne peux passer qu'une seule valeur, et donc je n'ai pas de colonne cachée stockant le valuemember

sinon rien à voir : concernant le listview, je ne sais pas comment récupérer la sélection en cours.
on m'a dit d'utiliser SelectedItems.
la seule chose, c'est que je ne vois pas comment utiliser cette propriété pour récupérer les valeurs des colonnes de la ligne sélectionnée. car si j'utilise subitems, je dois préciser sur selecteditems l'index utilisé. or je ne 'lai pas !
vois-tu ?
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
27 mai 2005 à 12:29
pour les combobox displaymenber et valuemender ne marche qu'en lisaion avec une BDD. c'est à dire que tu spécifie un dataset puis le champ de ce dataset que tu veux voir affiché.
Par contre tu doit créer tes requetes sql avec l'assistant de vb.net.
personnellemnt je ne l'utilise jamais car c'est super casse couile quand ta base évolue tu doit régénerer tes sqlcommand et tes dataset
(je sais pas si été clair)

pour faire afficher 2 colonne dans un combobox c'est pas possible

pour une listview

dans un bouton ou autre
j'ai une listview avec plusieurs colonne qui s'appelle listAdherent

'Déclaration de la collection de tous les items(=lignes) de ma listview
Dim SelItem
As
New ListView.ListViewItemCollection(listAdherent)


'Déclaration de tus les items (ou lignes) sélectionés dasn ma listview
Dim SelIndex
As
New ListView.SelectedIndexCollection(listAdherent)



'Si j'ai au moins une ligne de sélectionnée
If SelIndex.Count <> -1
Then


'Je fais afficher la colonne 0 (subitems (0)) de la ligne sélectionné (Item(selindex.item(0))) de ma list view (selitem)
txtNumero.Text = SelItem.Item(SelIndex.Item(0)).SubItems(0).Text


'Je fais afficher la colonne 1 (subitems (1)) de la ligne sélectionné (Item(selindex.item(0))) de ma list view (selitem)

txtSociete.Text = SelItem.Item(SelIndex.Item(0)).SubItems(1).Text

etc...


txtNom.Text = SelItem.Item(SelIndex.Item(0)).SubItems(2).Text


txtPrenom.Text = SelItem.Item(SelIndex.Item(0)).SubItems(3).Text



End
If

@+
LIM
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
27 mai 2005 à 12:59
resalut,
je comrpends bien ce que tu me dis
mais j'ai une erreur sur mon code :



ma listview s'appelle liste

Dim lignes
As
New ListView.ListViewItemCollection(Liste)



Dim selection
As
New ListView.SelectedIndexCollection(Liste)



If selection.Count <> -1
Then


MsgBox(lignes.Item(selection.Item(0)).SubItems(0).Text)



End
If

à l'appel de ce code, j'ai l'erreur suivante sur le msgbox : la référence d'objet n'est pas définie à une instance d'objet
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
27 mai 2005 à 13:07
du coup j'ai fait un peu différement :

MsgBox(Liste.Items(selection.Item(0)).SubItems(0).Text)

j'utilise juste selection, qui est


Dim selection
As
New ListView.SelectedIndexCollection(Liste)


et c'est ok

par contre, je ne m'étais pas rendue compte que l'orsqu'on cliquait sur un autre controle dans le formulaire, on perdait la sélection dans la liste. y'a pas une propriété pour changer ça ? afin par exemple de récupérer la séletion quand je clique dans un controle par exemple ...
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
27 mai 2005 à 13:31
ça marche niquel, merci
sinon tu sais comment on teste si une valeur est nulle ?

en l'occurence, je veux tester si un champ d'un datareader est nul ou pas ...
car lorsqu'il est nul, ça me génère une erreur lorsque je veux attribuer la valeur à une zone de texte de mon formulaire ...
texte.text=dr("nomchamp")
génère erreur si dr("nomchamp") est null ...
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
27 mai 2005 à 13:38
essaye de tester çà je ne l'est pas tester moi même

if isdbnull(dr("nomchamp")=false then
'Chaine non nulle
else
'Chaine nulle

endif

@+
LIM
0
elomiel Messages postés 52 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 4 avril 2006
27 mai 2005 à 14:34
c'est ce que j'ai fait et effectivement ça marche
0
Rejoignez-nous