Remplissage de ListView [Résolu]

jubourbon 40 Messages postés jeudi 6 mars 2008Date d'inscription 3 juillet 2009 Dernière intervention - 17 avril 2008 à 15:24 - Dernière réponse : cs_evodie 1 Messages postés mardi 19 janvier 2010Date d'inscription 19 juin 2010 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 17 avril 2008 à 15:31
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 17 avril 2008 à 16:57
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jubourbon 40 Messages postés jeudi 6 mars 2008Date d'inscription 3 juillet 2009 Dernière intervention - 18 avril 2008 à 08:26
3
Merci
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.

Merci jubourbon 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de jubourbon
jubourbon 40 Messages postés jeudi 6 mars 2008Date d'inscription 3 juillet 2009 Dernière intervention - 17 avril 2008 à 15:37
0
Merci
Je suis vraiment un gros debutant.
Effectivement ca marche mieux :)

Merci.
Commenter la réponse de jubourbon
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 17 avril 2008 à 15:45
0
Merci
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
Commenter la réponse de jrivet
jubourbon 40 Messages postés jeudi 6 mars 2008Date d'inscription 3 juillet 2009 Dernière intervention - 17 avril 2008 à 16:49
0
Merci
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.
Commenter la réponse de jubourbon
jubourbon 40 Messages postés jeudi 6 mars 2008Date d'inscription 3 juillet 2009 Dernière intervention - 17 avril 2008 à 17:00
0
Merci
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
Commenter la réponse de jubourbon
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 17 avril 2008 à 18:15
0
Merci
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
Commenter la réponse de jrivet
jubourbon 40 Messages postés jeudi 6 mars 2008Date d'inscription 3 juillet 2009 Dernière intervention - 18 avril 2008 à 08:16
0
Merci
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?
Commenter la réponse de jubourbon
cs_evodie 1 Messages postés mardi 19 janvier 2010Date d'inscription 19 juin 2010 Dernière intervention - 19 juin 2010 à 13:00
0
Merci
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
Commenter la réponse de cs_evodie

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.