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

VB.NET Discussion :

Filtrer un DataGridView


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Filtrer un DataGridView
    Salut à tous,

    Je suis débutant en VB et je suis en train de faire une application en VB.NET avec une base de données Access. J'utilise Visual studio 2010 et Access 2003 (.mdb).

    Mon problème est le suivant, je déclare mon dataGridView dans une fonction de la façon suivant :
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
        Public Sub DataGridInstitution()
     
     ' Déclaration Objet Connection
     
            Dim ObjetConnection As OleDbConnection
     
            ' Déclaration Objet Commande
     
            Dim ObjetCommand As OleDbCommand
     
            ' Déclaration Objet DataAdapter
     
            Dim ObjetDataAdapter As OleDbDataAdapter
     
            ' Déclaration Objet DataSet
     
            Dim ObjetDataSet As New DataSet
     
            ' Déclaration Objet DataTable
     
            Dim ObjetDataTable As New DataTable
     
            'String contenant la 'Requête SQL'
     
            Dim strSql As String
     
            'Paramêtres de connexion à la DB
     
            Dim strConn As String
     
            ' Déclaration d'un  OleDbCommandBuilder
     
            Dim ObjetCB As OleDbCommandBuilder
     
            'Initialisation de la chaîne de paramètres pour la connexion
     
            strConn = CheminDB.db
     
            'Initialisation de la chaîne contenant l'instruction SQL
     
            strSql = "SELECT ID_Institution , Nom FROM Institution"
     
            'Instanciation d'un Objet Connexion
     
            ObjetConnection = New OleDbConnection
     
            'Donner à la propriété ConnectionString les paramètres de connexion
     
            ObjetConnection.ConnectionString = strConn
     
            'Ouvrir la connexion
     
            ObjetConnection.Open()
     
            'Instancier un objet Commande
     
            ObjetCommand = New OleDbCommand(strSql)
     
            'Instancier un objet Adapter
     
            ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
     
            'initialiser l'objet Command
     
            ObjetCommand.Connection() = ObjetConnection
     
            'initialiser l'objet OleCBComandBuilder (sinon pas d'update)
     
            ObjetCB = New OleDbCommandBuilder(ObjetDataAdapter)
     
            'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
     
            ObjetDataAdapter.Fill(ObjetDataSet, "Institution")
     
            'Créer une datatable à partir du dataset
     
            ObjetDataTable = ObjetDataSet.Tables("Institution")
     
            'Mettre dans le DataGrid une table  DataTable
            BindingSourceInstitution.DataSource = ObjetDataTable
            BindingNavigatorInstitution.BindingSource = BindingSourceInstitution
            DataGridViewRechercheInstitution.DataSource = BindingSourceInstitution
     
            DataGridViewRechercheInstitution.Columns(0).Visible = False
     
     End Sub
    Je déclare mon data Set hors de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim ObjetDataSet As New DataSet
    J'aimerais à l'aide d'une TextBox que rempli l'utilisateur, faire un filtre des données qui sont dans le DataGridView

    Par exemple : Si je cherche le nom "Paul", lorsque l'utilisateur inscrit la lettre "P" dans la TextBox, j'aimerais que dans le DataGridView il ne reste que les noms contenant un "P". Ensuite, s'il met "Pa", il ne devrait rester que les noms contenant "Pa" et ainsi de suite!

    En regardant sur différents sites, il faudrait utiliser grâce au DataSet que j'ai déclaré, un dataView, un datatable et un RowFilter...

    Mais le problème c'est que je ne sais pas comment l'utiliser.

    Qui saurait m'aiguiller? Me donner un bout de code ou quoi?

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    En intercalant un BindingSource entre DataGridView et DataTable, on pourra jouer sur la propriété Filter du BindingSource.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BindingSource bindingSource1= new BindingSource() ;
    bindingSource1.DataSource = dataTable1 ;
    dataGridView1.DataSource = bindingSource1;
    ...
    bindingSource1.Filter="NAME LIKE 'PA%'" ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    je suis d'accord qu'on pourra jouer sur la propriété "Filter"

    Mais je dois mettre quoi comme code et où? Dans le Load du formulaire? Dans la fonction que j'ai utilisé pour déclarer mon dataGridView?

    Comment relier ce BindingSource avec le dataGridView et la TextBox?

    Désolé pour toutes ces questions mais ça fait plus d'un jour que je cherche sans résultat...

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    J'ai rajouté du code dans mon post précédent.
    Pour utiliser la textBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bindingSource1.Filter="NAME LIKE '"+textBox1.Text+"%'" ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci je vais essayer!

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    ça ne fonctionne pas, j'ai mis le code aussi bien dans le load du formulaire qu'avec la fonction du DataGridView et il n'y a aucun résultat... Comme j'ai dit je débute donc il est possible que ce que j'explique ou ce que je code dans mon programme ait des lacunes...

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Si tu utilisais le Designer pour Binder la dataTable au DataGridView, il faut ajouter un Binding Source via le Designer et modifier en conception la propriété DataSource du BindingSource et affecter le BindingSource à la propriété bindingSource du DataGeridView.

    Si dans ton code, tu affectais au GridView.DataSource la DataTable, c'est là qu'il faut changer le code.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Si tu utilisais le Designer pour Binder la dataTable au DataGridView, il faut ajouter un Binding Source via le Designer et modifier en conception la propriété DataSource du BindingSource et affecter le BindingSource à la propriété bindingSourcedatasource du DataGeridView.

    Si dans ton code, tu affectais au GridView.DataSource la DataTable, c'est là qu'il faut changer le code.
    Petite correction.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    J'aurais une autre petite question, j'ai réussi à filtrer mon dataGrid avec ton code. Mais j'aimerais le filtrer avec du numérique. Alors quand je le fais, il m'a mis une erreur et donc j'ai rempli de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     If Not TextBoxRecherche.Text = "" Then
                BindingSourceInstitution.DataSource = ObjetDataTable
     
                DataGridViewRechercheInstitution.DataSource = BindingSourceInstitution
     
                BindingSourceInstitution.Filter = "ID_Institution = " + TextBoxRecherche.Text + ""
     
            End If
    Mais le problème c'est que si j'efface l'ID dans la textBox le datagrid ne se remplit plus...

    Quelqu'un a une idée?

  10. #10
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Utilise un else dans ton exemple qui me le filtre du binding source à "".

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

Discussions similaires

  1. Filtrer un DataGridView, sur quel Event ?
    Par dsolheid dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/01/2008, 16h04
  2. filtrer un DataGridView
    Par will2taz dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/07/2007, 21h20
  3. [VB.NET] Filtrer un datagridview
    Par olbi dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/04/2007, 14h19
  4. [VB.net] Filtrer un datagridview par un DatetimePicker
    Par collaud_vb dans le forum Windows Forms
    Réponses: 12
    Dernier message: 28/09/2006, 10h09
  5. [C#] méthodes pour filtrer un datagridview ?
    Par tikam dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/08/2006, 13h24

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