Bonjour,
je ne comprends pas pourquoi j'arrive à filtrer le contenu d'un DGV depuis une listbox lorsque la listbox contient des Integer et pas lorsque ce sont des String.
Bien entendu, le filtre ne s'applique pas sur la même colonne.
Lors du chargement du formulaire, je remplis la listbox de valeurs unique et le DGV avec toutes les données, cela fonctionne très bien.
La où ça se gâte, c'est en selectionnant une donnée dans la listbox qui doit filtrer le DGV.
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim csvPath As String = "C:\itunes\test.csv" 'Create a DataTable. Dim dt As New DataTable() ' Create typed columns in the DataTable. dt.Columns.Add("col1", GetType(Integer)) dt.Columns.Add("col2", GetType(DateTime)) dt.Columns.Add("col3", GetType(String)) dt.Columns.Add("col4", GetType(Integer)) dt.Columns.Add("col5", GetType(String)) dt.Columns.Add("col6", GetType(String)) dt.Columns.Add("col7", GetType(String)) 'charger les données du fichier csv Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(csvPath) MyReader.TextFieldType = FileIO.FieldType.Delimited MyReader.SetDelimiters(";") Dim currentRow As String() Dim numCol As Integer Dim dico As New HashSet(Of String) 'dico pour tester les valeur à mettre dans listobx While Not MyReader.EndOfData dt.Rows.Add() Try currentRow = MyReader.ReadFields() Dim currentField As String numCol = 0 For Each currentField In currentRow dt.Rows(dt.Rows.Count - 1)(numCol) = currentField 'chargement de la datasource numCol = numCol + 1 If numCol = 3 Then 'ajout éventuel au dico qui servira à remplir la listbox de valeurs uniques If dico.Contains(currentField) = True Then Else dico.Add(currentField) ListBox1.Items.Add(currentField) 'ajout au listbox le champ End If End If Next Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException MsgBox("Line " & ex.Message & "is not valid and will be skipped.") End Try End While Dim bs As New BindingSource bs.DataSource = dt DG1.DataSource = bs End Using End Sub
J'ai une erreur qui indique :-> où UND est par exemple la valeur sélectionnée dans la listbox
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.Data.EvaluateException : 'Cannot find column [UND].'
Voici le code sur la listbox
Qu'est ce que je n'ai pas compris ? Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged Dim bs As New BindingSource bs.DataSource = Me.DG1.DataSource bs.Filter = "col3=" & ListBox1.SelectedItem End Sub
Partager