Rechercher dans un DataGridView
Bonjour,
Je commence le VB.Net, j'ai difficile à faire une recherche dans un DataGridView. Ca fonctionne sauf qu'il y a un bug et j'aimerai savoir s'il y a une méthode plus facile.
Je fais une requête SQL (MySQL) pour avoir toutes les informations, ensuite les place dans une DataTable ensuite l'envoie dans une liste d'object (ClAliment). J'ai mis un DataView comme source DataSource de mon DataGridView. Et pour rechercher, j'utilise la fonction RowFilter du DataView mais je me perds un peu entre la liste d'object, le DataView et le DataGridView...
Il y a une colonne nom et je veux que l'utilisateur puisse rechercher (filtrer) un aliment par le nom après avoir tapé 3 caractères minimum. Il peut aussi les filtrer par catégories d'aliments grâce à un ComboBox.
Voici mes méthodes de recherches (alc_id_now = la catégorie d'aliments, 0 = toutes les catégories) :
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 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
|
Private Sub TabRep_TBRechercheAli_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBRechercheAli.TextChanged
If (alc_id_now = 0 And TBRechercheAli.Text.Length > 2) Then
DVAliment.RowFilter = "ali_nom LIKE '%critere%'".Replace("critere", TBRechercheAli.Text)
ElseIf (alc_id_now <> 0 And TBRechercheAli.Text.Length > 2) Then
DVAliment.RowFilter = "ali_fk_alc_id = " & alc_id_now & " AND ali_nom LIKE '%critere%'".Replace("critere", TBRechercheAli.Text)
ElseIf (alc_id_now = 0 And TBRechercheAli.Text.Length < 3) Then
DVAliment.RowFilter = "ali_nom LIKE '%critere%'".Replace("critere", "")
' comment faire pour qu'il ne fasse pas de requete ??
Else
DVAliment.RowFilter = "ali_fk_alc_id = " & alc_id_now & " AND ali_nom LIKE '%critere%'".Replace("critere", TBRechercheAli.Text)
End If
TabRep_TBRechercheAli_Display()
End Sub
Private Sub TabRep_TBRechercheAli_Display()
listAli.Clear()
For Each myrow As DataRowView In DVAliment
Dim ta_deci(27) As Decimal
ta_deci(0) = myrow.Item("ali_kcal")
ta_deci(1) = myrow.Item("ali_kj")
ta_deci(2) = myrow.Item("ali_proteine")
ta_deci(3) = myrow.Item("ali_lipide")
ta_deci(4) = myrow.Item("ali_agsat")
ta_deci(5) = myrow.Item("ali_agmonoinsat")
ta_deci(6) = myrow.Item("ali_agpolyinsat")
ta_deci(7) = myrow.Item("ali_aclino")
ta_deci(8) = myrow.Item("ali_cholesterol")
ta_deci(9) = myrow.Item("ali_hcdiges")
ta_deci(10) = myrow.Item("ali_sucre")
ta_deci(11) = myrow.Item("ali_amidon")
ta_deci(12) = myrow.Item("ali_fibres")
ta_deci(13) = myrow.Item("ali_eau")
ta_deci(14) = myrow.Item("ali_sodium")
ta_deci(15) = myrow.Item("ali_potassium")
ta_deci(16) = myrow.Item("ali_calcium")
ta_deci(17) = myrow.Item("ali_phosphore")
ta_deci(18) = myrow.Item("ali_magnesium")
ta_deci(19) = myrow.Item("ali_fer")
ta_deci(20) = myrow.Item("ali_cuivre")
ta_deci(21) = myrow.Item("ali_zinc")
ta_deci(22) = myrow.Item("ali_a")
ta_deci(23) = myrow.Item("ali_b1")
ta_deci(24) = myrow.Item("ali_b2")
ta_deci(25) = myrow.Item("ali_b12")
ta_deci(26) = myrow.Item("ali_c")
listAli.Add(New ClAliment(myrow.Item("ali_id"), myrow.Item("ali_nom"), ta_deci, myrow.Item("ali_compose"),
LANGUE, myrow.Item("ali_fk_alc_id"), myrow.Item("ali_fk_die_id"), 100))
Next 'New ClAliment(id, nom, ta_deci, compose, langue, fk_alc, fk_die, quantite)
TabRep_DGVAliment_DisplayList()
End Sub |
Merci d'avance
Fost