Bonjour
Comment fait on pour remplier une listview à deux colonnes à partir d'une BDD connectée?
Merci
Version imprimable
Bonjour
Comment fait on pour remplier une listview à deux colonnes à partir d'une BDD connectée?
Merci
Bonjour,
Dans les propriétés de la liste : dataBinding -> avancés -> liaison tu choisis ta BD
Bonne chance
Bonsoir
C'est ce que j'ai fait mais ma liste reste désespérément vide !!
Y'a t'il autre chose à faire ?
Rebonjour
Franchement je sais pas pour la listView mais personnellement, j'ai utilisé ce code pour une comboBox et ca marche, je sais pas si ca peux vous aider : (tu peux créer une comboBox invisible, tu la remplis et puis tu rempli ta liste depuis, comme une solution temporelle ;) )
(avec dt est mon dataset et TAdt le table adapter relative )
Je suis désolé.Code:
1
2
3
4
5
6
7 Public dt As New BSTRDataSet.Projet1DataTable Public TAdt As New BSTRDataSetTableAdapters.Projet1TableAdapter TAdt.Fill(dt) ComboBox1.DataSource = dt ' "NomProjet" est le nom de la colonne que je veux afficher ComboBox1.DisplayMember = "NomProjet"
La listview intégrée par défaut à visual studio n'a pas de propriété datasource. Faudrait donc utiliser un datareader et le parcourir pour remplir ta listview.
Bonjour,
Le contrôle ListView ne possède pas de propriété .DataSource.
Vous pouvez cependant ajouter des items un par un :
Après, il ne reste plus qu'à arranger un peu le tout.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 'On ajoute les colonnes, on définit Width sur auto en mettant -2 et on centre le texte With ListView1.Columns .Add("Nom du client", -2, HorizontalAlignment.Center) .Add("Adresse", -2, HorizontalAlignment.Center) .Add("Code postal", -2, HorizontalAlignment.Center) .Add("Ville", -2, HorizontalAlignment.Center) End With 'On met le mode d'affichage du ListView sur Détail ListView1.View=View.Details '_dt est une DataTable. Pour chaque ligne contenues dans la table, 'on créé un ListViewItem auquel on ajoute des SubItems pour que les valeurs 'soient affichées dans les colonnes en mode détail With _dt For Each _Row As EWSDataSet.TClientsRow In _dt.Rows Dim lvi As ListViewItem = ListView1.Items.Add(_Row.Nom) With lvi.SubItems .Add(_Row.Adresse) .Add(_Row.CodePostal) .Add(_Row.Ville) End With Next End With
Attention cependant aux valeurs DBNull dans le DataSet, chez moi ça provoque une erreur que je n'ai pas pris le temps de corriger.
@Callo : tu es trop rapide ...
Selon la finalité de ta listview il faudrait peut-être songer à utiliser un DataGridView qui serait plus adapté.
Bonjour
Avec les différentes réponses reçues et en fouillant à droite et à gauche je réussis à remplir ma ListView mais une seule colonne se remplit (La première)
Voici le code utilisé
Je pense qu'il manque une ligne entre do While myReader.... et LoopCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _ "C:\Access\DvdData.mdb") Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand() Mycommand.CommandText = "SELECT TitreFilm,RéfCollectionVidéo FROM Vidéo" MyConnexion.Open() Dim myReader As OleDbDataReader = Mycommand.ExecuteReader() ListView1.View = View.Details With ListView1.Columns .Add("Titre", -2, HorizontalAlignment.Center) .Add("N°", -2, HorizontalAlignment.Center) End With Do While myReader.Read() ListView1.Items.Add(myReader.GetString(0)) Loop myReader.Close() MyConnexion.Close() End Sub
mais je ne trouve pas
Merci de vos conseils
Bonjour,
Ta première colonne est un ListViewItem. Après avoir inséré la donnée de ta première colonne (le ListViewItem); tu insères, la donnée correspondante de la deuxième colonne comme un ListViewSubItem du ListViewItem.
Bonjour
J'ai essayé plusieurs syntaxes mais ça ne marche pas
Peux tu me donner un peu plus d'explications ?
Merci
J'ai bien essayé le code de Rainui mais je ne parviens pas à trouver ce qu'il faut mettre comme nom de DataTable à la place de _dt.
Essayez avec :
Code:
1
2
3
4
5
6
7 Do While myReader.Read() Dim _MyListViewItem As ListViewItem = ListView1.Items.Add(myReader.GetValue(0).ToString) 'Utiliser la méthode .GetValue permet de retourner la valeur de la colonne spécifiée dans son format natif With _MyListViewItem .SubItems.Add(myReader.GetValue(1).ToString) End With Loop
Merci de vos conseils
ça fonctionne impec..