Remplissage de ListView

Résolu
jubourbon Messages postés 40 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 3 juillet 2009 - 17 avril 2008 à 15:24
cs_evodie Messages postés 1 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 19 juin 2010 - 19 juin 2010 à 13:00
Bonjour,

Premiere programmation en vb.net, je cherche à remplir une listview, mais n'arrive qu'a avoir une belle liste vide.
Je m'explique, j'ai créé une listview, je l'ai parametré sur details, j'ai declaré 3 colonnes:
column0
column1
column2

Apres multiple recherche, je retiompbe toujours sur la meme syntaxe, et pourtant ca ne marche pas.
Voici ce que j'ai tapé:
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
        Dim ls As New ListViewItem("bloblo")
        ls.Checked = True
        ls.SubItems.Add("Column0").Text = "blabla"
        ls.SubItems.Add("Column1").Text = "blablibla"
        ls.SubItems.Add("Column2").Text = "hhhhhhhhh"

        ListView1.Items.Add(ls)

End Sub

Je ne comprend pourquoi ce la ne fonctionne pas.

D'avance merci pour votre aide.
A voir également:

10 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2008 à 15:31
Salut,
Sans regarder plus loin je dirais que c'est parce que tu l'as mis dans l'évènement  SelectedIndexChanged Du ListView.
Evenement qui survient (entre autre) lorsque l'on sélectionne une ligne (MAIS ELLE EST VIDE).

Si tu veux le remplir au démarrage , place ton code dans le Chargement de ta feuille ca sera plus "logique"

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2008 à 16:57
Salut,
Il me semble (enfin si c'est comme en VB6) que la premiere colonne prends la valeur Dim ls As New ListViewItem("blabla") Donc si tu veux pas du "blabla" il faut mettre

Dim mavariable As String = "voiture"
'"blabla" = 1 ere colonne
Dim ls As New ListViewItem(mavariable)
ls.Checked = True
ls.SubItems.Add("column0").Text = ("12/04/08")
ls.SubItems.Add("column1").Text = "materiel"
ListView1.Items.Add (ls)
, ----
[code.aspx?ID=41455 By Renfield]

Si tu veux garder "blabla" tu dois simplement augmenter le nombre de colonnes de ton ListView

Voilà j'espère que cela t'aide un peu.

<hr size ="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
3
jubourbon Messages postés 40 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 3 juillet 2009
18 avril 2008 à 08:26
C'est bon j'ai fini par trouver, tous simplement en mettant mon bout de code dans une procedure, que j'appel à chaque clique

Merci pour ton aide.
3
jubourbon Messages postés 40 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 3 juillet 2009
17 avril 2008 à 15:37
Je suis vraiment un gros debutant.
Effectivement ca marche mieux :)

Merci.
0

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2008 à 15:45
Re,
Pas de quoi, c'est en faisant des erreurs que l'on apprend le plus (surtout en informatique)

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
0
jubourbon Messages postés 40 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 3 juillet 2009
17 avril 2008 à 16:49
Euh, j'ai une autre question.
Je ne comprend pas tres bien comment cela fonctionne?

Voici mon code modifié:
      Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim mavariable As String = "voiture"
        Dim ls As New ListViewItem("blabla")
        ls.Checked = True
        ls.SubItems.Add("column0").Text = mavariable
        ls.SubItems.Add("column1").Text = ("12/04/08")
        ls.SubItems.Add("column2").Text = "materiel"
        ListView1.Items.Add(ls)
    End Sub

Et à l'affichage, j'ai dans ma premiere colonne blabla, la deuxieme voiture et la troisieme 12/04/08.
Ne devrais je pas avoir dans l'ordre voiture-12/04/08-materiel?

Ensuite, je souhaiterais ajouter à chaque evenement click d'un bouton, une ligne supplementaire.
Suis je obligé de recréer une variable de type ListViewItem? Il doit y avoir une methode plus optimal?

Merci d'avance.
0
jubourbon Messages postés 40 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 3 juillet 2009
17 avril 2008 à 17:00
Oué carrement, mais pour l'histoire d'ajouter suite a un evenement sans effacer l'enregistrement precedent, aurais tu une idée?
dois je recreer une variable du genre:
Dim ls2 As New ListViewItem(mavariable)'contenant la nouvelle valeur de mavariable
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2008 à 18:15
Salut,
Je n'ai pas compris ta question. normalement rien ne s'efface tant que tu ne lui dit pas.

<hr size="2" width="100%" />@+: Ju£i?n
Pensez: Réponse
0
jubourbon Messages postés 40 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 3 juillet 2009
18 avril 2008 à 08:16
Par exemple pour ecrire une premiere ligne dans mon tableau, je tape:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim mavariable As String = "voiture"
        Dim ls As New ListViewItem("blabla")
        ls.Checked = True
        ls.SubItems.Add("column0").Text = mavariable
        ls.SubItems.Add("column1").Text = ("12/04/08")
        ls.SubItems.Add("column2").Text = "materiel"
        ListView1.Items.Add(ls)
    End Sub

Pour la seconde ligne dois je recreer une variable du type:
Dim ls2 As New ListViewItem("blibli")....

Ce n'est pas tres pratique car au bout du compte j'aurais ls, ls2,....lsN, difficilement gerable.
Est ce un peu plus clair?
0
cs_evodie Messages postés 1 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 19 juin 2010
19 juin 2010 à 13:00
Private Sub Form_Load()

AdoDirection.CommandType = adCmdText

AdoDirection.RecordSource = "select* from Direction"
AdoDirection.Refresh
If AdoDirection.Recordset.RecordCount > 0 Then
For I = 1 To AdoDirection.Recordset.RecordCount

codedirection = AdoDirection.Recordset.Fields(0)
nomdirection = AdoDirection.Recordset.Fields(1)
Set Noeud1 = TreeView1.Nodes.Add(, , codedirection, nomdirection)
AdoDirection.Recordset.MoveNext

AdoService.CommandType = adCmdText
AdoService.RecordSource "select* from Service where Srv_code_dir'" & codedirection & "'"
AdoService.Refresh
If AdoService.Recordset.RecordCount > 0 Then
For j = 1 To AdoService.Recordset.RecordCount
servicecode = AdoService.Recordset.Fields(0)
servicenom = AdoService.Recordset.Fields(1)
Set Noeud1 = TreeView1.Nodes.Add(codedirection, tvwChild, servicecode, servicenom)

AdoService.Recordset.MoveNext
Next j
End If

Next I


End If
End Sub



Private Sub TVWorganigramme_Nodeclick(ByVal Node As MSComctlLib.Node)
'MsgBox Node.Children
AdoAgent.CommandType = adCmdText

ListView1.ListItems.Clear

If Node.Children > 0 Then

codedirection = Node.Text
AdoAgent.RecordSource = "select * where Agt_codeDirection='" & codedirection & "'"
AdoAgent.Refresh
AdoAgent.Recordset.MoveFirst
'If AdoAgent.Recordset.RecordCount > 0 Then
For j = 1 To AdoAgent.Recordset.RecordCount

'Transfert du contenu des différents champs dans des variables
nmatricule = AdoAgent.Recordset![Agt_matricule]
cnom = AdoAgent.Recordset![Agt_nom]
cprenom = AdoAgent.Recordset![Agt_prenom]

'Insérer le contenu des variable
Set ligneagent = ListView1.ListItems.Add(, , "nmatricule")
'ligneagent.SubItems(1) = AdoAgent.Recordset.Fields("cnom")
'ligneagent.SubItems(2) = AdoAgent.Recordset.Fields("cprenom")
ligneagent.SubItems(1) = cnom
ligneagent.SubItems(2) = cprenom
AdoAgent.Recordset.MoveNext
Next j
'End If

Else
servicecode = Node.Text
AdoAgent.RecordSource = "select * where Agt_codeService='" & servicecode & "' "
AdoAgent.Refresh
AdoAgent.Recordset.MoveFirst
'If AdoAgent.Recordset.RecordCount > 0 Then
For t = 0 To AdoAgent.Recordset.RecordCount

'Transfert du contenu des différents champs dans des variables
nmatricule = AdoAgent.Recordset![Agt_matricule]
cnom = AdoAgent.Recordset![Agt_nom]
cprenom = AdoAgent.Recordset![Agt_prenom]

'Insérer le contenu des variable
Set ligneagent = ListView1.ListItems.Add(, , "nmatricule")
'ligneagent.SubItems(1) = AdoAgent.Recordset.Fields("cnom")
'ligneagent.SubItems(2) = AdoAgent.Recordset.Fields("cprenom")
ligneagent.SubItems(1) = cnom
ligneagent.SubItems(2) = cprenom
AdoAgent.Recordset.MoveNext
Next t
'End If

End If
End Sub
0
Rejoignez-nous