Bonsoir
J'ai une question surement simple sur comment vider une listbox
J'ai une première listbox qui se remplie avec un dataset, et lorsque je sélectionne un élément de cette listbox cela remplie une deuxième listbox (même procédé, requête sur un dataset)
J'ai essayé d'utiliser la fonction clear, remove, ca me vide bien la deuxième listbox en visuel (en ayant bien sur paramétrer le datasource sur nothing)
mais lorsque je sélectionne un élément sur la première listbox tout les éléments réapparaissent et s'accumulent
Je ne souhaite volontairement pas passer par un bouton (sauf mis a part pour test) pour garder une navigation plus rapide sur le soft
Mon code:
Remplissage de la première listbox
Remplissage de la deuxième listbox:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub Categories_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= data.mdb;" strSql = "SELECT [code type], type FROM [2-RUBRIQUES_locale] WHERE [code gamme] = " & Me.Label1.Text ObjetConnection = New OleDbConnection ObjetConnection.ConnectionString = strConn ObjetConnection.Open() ObjetCommand = New OleDbCommand(strSql) ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand) ObjetCommand.Connection() = ObjetConnection ObjetDataAdapter.Fill(ObjetDataSet, "[2-RUBRIQUES_locale]") ObjetDataTable = ObjetDataSet.Tables("[2-RUBRIQUES_locale]") ListBox1.DisplayMember = "type" ListBox1.ValueMember = "code type" ListBox1.DataSource = ObjetDataSet.Tables("[2-RUBRIQUES_locale]") ObjetConnection.Close() End Sub
Fonction pour vider la listbox2, je l'ai placer sur un bouton pour le moment:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged If ListBox1.SelectedIndex <> -1 Then strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= data.mdb;" strSql = "SELECT [code type1], [code type2], type FROM [2-RUBRIQUES2_locale] WHERE [code type2] = " & ListBox1.SelectedValue.ToString ObjetConnection = New OleDbConnection ObjetConnection.ConnectionString = strConn ObjetConnection.Open() ObjetCommand = New OleDbCommand(strSql) ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand) ObjetCommand.Connection() = ObjetConnection ObjetDataAdapter.Fill(ObjetDataSet, "[2-RUBRIQUES2_locale]") ObjetDataTable = ObjetDataSet.Tables("[2-RUBRIQUES2_locale]") ListBox2.DisplayMember = "type" ListBox2.ValueMember = "code type1" ListBox2.DataSource = ObjetDataSet.Tables("[2-RUBRIQUES2_locale]") ObjetConnection.Close() End If End Sub
Est ce que je dois vider le dataset? vu que la requête est rappelée a chaque sélection d'un élément sur la listbox1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.ListBox2.DataSource = Nothing ListBox2.Items.clear() ListBox2.Refresh() End Sub End Class
Merci d'avance![]()
Partager