Remplissage de ListView [Résolu]

Signaler
Messages postés
40
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
3 juillet 2009
-
Messages postés
1
Date d'inscription
mardi 19 janvier 2010
Statut
Membre
Dernière intervention
19 juin 2010
-
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.

10 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
40
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
3 juillet 2009

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.
Messages postés
40
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
3 juillet 2009

Je suis vraiment un gros debutant.
Effectivement ca marche mieux :)

Merci.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
40
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
3 juillet 2009

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.
Messages postés
40
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
3 juillet 2009

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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
40
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
3 juillet 2009

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?
Messages postés
1
Date d'inscription
mardi 19 janvier 2010
Statut
Membre
Dernière intervention
19 juin 2010

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