IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Rechercher dans un DataGridView


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 10
    Points
    10
    Par défaut 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 : 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
     
       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

  2. #2
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Je ne comprends pas non plus a quoi sert ta liste d'objet

    Mais pour ta question de base
    1- Tu recupere une datatable issue d'un Query SQL
    2- Tu cree un dataview sur ta datatable
    3- Tu met ce DataView en datasource d'un DGV
    4- Tu peux modifier la proprieté RowFilter de ton DataView pour filtrer le dataview et donc l'affichage

    Quel est le problème ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Salut,

    J'ai modifié. Avant, je mettais la datatable en liste d’objets puis affichait qu'une partie des objets dans le datagridview.

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Donc maintenant tout va bien ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Oui pour la recherche d'aliments mais j'ai d'autres petits problèmes...
    J'ai un ControlTab, est-il possible d'avoir un fichier (.vb) différent par onglet ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/11/2014, 23h48
  2. [Débutant] Recherche dans un DataGridView
    Par kevindeta dans le forum C#
    Réponses: 7
    Dernier message: 13/12/2011, 16h40
  3. Effectuer une recherche dans un datagridview
    Par Manbiz dans le forum C#
    Réponses: 0
    Dernier message: 07/05/2010, 13h53
  4. Loupe de recherche dans un datagridview
    Par amirad dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/03/2009, 10h27
  5. Rechercher un élément dans un DataGridView
    Par vb dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/08/2007, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo