Bonjour,
J'ai un WindowsForm dans lequel il y a plusieurs listbox et un dataGridView. J'ai relié mon DataGridView avec une table SQL dans laquelle je souhaite filtrer avec mes listboxes.
J'arrive à filtrer avec mes listbox mais chacune fait son filtre. J'ai besoin de combiner les filtres de mes listbox ex: Mon datagriview représente une table d'actions d'entreprises.
J'ai une listbox "devise" avec des devises telles que "USD", "EUR","CHF" etc... et une listbox "secteurs" tels que "Technologie", "Automobile","Media" etc...
L'objectif est de filtrer par exemple en affichant les actions dont la devise est "EUR" ET le secteur "Automobile".
Voici mon code:
Exemple d'une listbox qui filtre de manière seule (non simultanée avec un autre filtre):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // Remplis mon dataGridViewActions avec les devises et les secteurs de toutes les actions public void defaultview() { string connetionString = @"Data Source=mon_serveur;Initial Catalog=ma_base_de_données;Integrated Security=SSPI"; SqlConnection cnn = new SqlConnection(connetionString); SqlDataAdapter sqlDA = new SqlDataAdapter("SELECT Devises, Secteurs FROM Actions", cnn); System.Data.DataTable Dt = new System.Data.DataTable(); sqlDA.Fill(Dt); dataGridViewActions.DataSource = Dt; }
ce que j'ai tenté ... qui compile mais ne renvoi rien dans le datagridview:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void Devises_listBox_SelectedIndexChanged(object sender, EventArgs e) { string connetionString = @"Data Source=mon_serveur;Initial Catalog=ma_base_de_données;Integrated Security=SSPI"; SqlConnection cnn = new SqlConnection(connetionString); SqlDataAdapter sqlDA = new SqlDataAdapter("SELECT Devises, Secteurs FROM Actions", cnn); System.Data.DataTable Dt = new System.Data.DataTable(); sqlDA.Fill(Dt); DataView dv = Dt.DefaultView; dv.RowFilter = "Devises LIKE '" + Devises_listBox.Text + "'"; dataGridViewFund.DataSource = dv; }
J'ai créé une variable string vide dans ma classe partielle Form:
ensuite lorsque je click sur un item d'une listbox (ici la listbox "secteurs"), c'est censé faire un appel à la fonction "rowfilterer" qui va récupérer un string que je le lui passe qui doit s'ajouter à ma variable "varfilter":
Code : Sélectionner tout - Visualiser dans une fenêtre à part string varfilter = "";
De cette façon je me suis dit que les strings de filtre pourraient s'ajouter et donc compléter le string qui va servir de requête à la base SQL.
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 void Secteurs_listBox_SelectedIndexChanged(object sender, EventArgs e) { rowfilterer("Secteurs LIKE '" + Secteurs.Text + "'"); } void rowfilterer(string newfilter) { string connetionString = @"Data Source=mon_serveur;Initial Catalog=ma_base_de_données;Integrated Security=SSPI"; SqlConnection cnn = new SqlConnection(connetionString); SqlDataAdapter sqlDA = new SqlDataAdapter("SELECT Devises, Secteurs FROM Actions", cnn); System.Data.DataTable Dt = new System.Data.DataTable(); sqlDA.Fill(Dt); DataView dv = Dt.DefaultView; if (varfilter.Length > 1) { varfilter = varfilter += $"And {newfilter}"; dv.RowFilter = varfilter; } else { varfilter = $"{newfilter}"; dv.RowFilter = varfilter; } dataGridViewFund.DataSource = dv; }
Mais bon... pour l'instant ca va nulle part.
Quelqu'un a une idée ?
Merci d'avance pour votre aide
Partager