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 :

[VB.net 2010] Filtrer un « DataGridView » de deux manières !


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [VB.net 2010] Filtrer un « DataGridView » de deux manières !
    Bonjour le Forum et merci pour l’aide que vous voudrez bien m’apporter !

    Dans un UserForm, j’utilise un DataSet pour alimenter un DataGridView .

    L’idée étant de créer un moteur de recherche pour filtrer les déférents projets présents dans ma base de données SQL Serveur.

    Mais projets on un statut qui vas de 1 à 6. Mon problème est dans un premier temps d’afficher dans ma DataGridView que les lignes qui respect un certain critère ! (critère = "statut=1 or statut= 3" par exemple ou encore critère critère= "statut<6") ou peu importe !

    Et dans un deuxième applique un autofilter à ma DataGridView pour afficher les lignes en relations avec les critères sectionnés dans autofilter comme dans Excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Private Sub DbGrid_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim Dt As DbGrid_Metier = New DbGrid_Metier()
            Me.DataGridView1.DataSource = Dt.RetournTablaue() 'Appel Couche Sql
            Dt.Dispose()
            Dt = Nothing
        End Sub
    Merci pour votre aide.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pour filtrer "vite fait", tu peux utiliser un DataView. La propiété "expression" du datavue, te permets de définir tes critères de filtrage.

    En fait, au lieu de "brancher" ta table directement sur le DatagridView, tu la "branches" sur le DataView, et tu "branches" le Dataview comme Source du Datagridview.

    Pour avoir ton "filtre", tu pourrais avoir quelques boutons avec des Expressions toutes faites, ou afficher un Textbox pour recueillir une Expression particulière.

    Le BindingSource peut aussi filtrer des données.

    En fouillant sur ma machine, j'ai trouvé cet articles pour t'inspirer:


    http://vbcity.com/blogs/xtab/archive...-dataview.aspx

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir Clément,
    Je te remercie c'est exactement ce que je cherchais,je test demain et je te tiens informé!

    Encore un grand merci.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Grâce à l'aide de Clément, j'ai réussi à filtré ma "DataGridView" en utilisant "DataView".
    J’en ai profité pour attribuer une couleur différente pour chaque statut et pour chaque ligne.
    J’ai défini un champ texte pour chaque cellule d’une même ligne.
    En revanche ce que je souhaite et pour laquelle la proposition de Clément ne répond pas pour l’instant, mais j’ai peut-être mal compris, c’est d’adapter le contrôle "DataGridView" pour ajouter un flèche sur le "ColumnHeaders" pour afficher une liste multi sélection afin de filtrer sur le contenu de la colonne cette fois !
    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
     Private Sub DbGrid_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Me.Tag = ""
            Dim Dt As DbGrid_Metier = New DbGrid_Metier()
            Dim ds As DataSet = Dt.RetournTablaue() 'Appel Couche Sql
            Dim dtable As DataTable = ds.Tables("RsSelectRecherche")
            Dim dv As New DataView(dtable)
            dv.RowFilter = "idstatus=4"
            For i As Integer = 1 To 13
                Me.Controls("Text" + i.ToString).DataBindings.Add("Text", dv, dv.Table.Columns(i - 1).Caption.ToString)
            Next
            Me.DataGridView1.DataSource = dv 'Appel Couche Sql
            Dt.Couleur(Me.DataGridView1)
            Me.DataGridView1.Columns(Me.DataGridView1.Columns.Count - 1).Visible = False
            Me.DataGridView1.Columns(Me.DataGridView1.Columns.Count - 2).Visible = False      
            Dt.Dispose()
            Dt = Nothing
        End Sub
    Ci joint une image Excel!
    Images attachées Images attachées  

  5. #5
    Expert confirmé 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
    Par défaut
    Adapter le contrôle "DataGridView" pour ajouter un flèche sur le "ColumnHeaders" pour afficher une liste multi sélection afin de filtrer sur le contenu de la colonne cette fois
    On peut décomposer cette fonctionnalité ainsi:
    1) Afficher une flêche dans le ColumnHeader,
    2) Designer un menu type "Excel",
    3) Montrer le menu lorsqu'on clique sur le header,
    3) Gérer les event du menu en jouant sur la redéfinition du dataview ou sur les propriétés "Filter" et "Sort" du BindingSource.

    Quels sont les points qui te posent roblème ?

    Remarque pour les bases de moins de 100 000 enregistrements : j'utilise toujours des BindingSource et pas de DataView.
    Mais, c'est par habitude. Je n'ai pas fait d'étude comparative à ce sujet
    .

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par rdurupt Voir le message
    Bonjour,
    En revanche ce que je souhaite et pour laquelle la proposition de Clément ne répond pas pour l’instant, mais j’ai peut-être mal compris, c’est d’adapter le contrôle "DataGridView" pour ajouter un flèche sur le "ColumnHeaders"
    Non, non, c'est moi qui avait mal compris. Je n'ai jamais pensé à ce menu contextuel.


    Ajouté:

    Je suis allé faire une recherche sur Code Project. Bien honnêtement, je n'ai pas dépassé par la première page de résultats. Sur la page en question, les 4 ou 5 premiers liens me semblent intéressants. Celui qui me semble (pas garanti, mais bon...) le plus près de ce que tu voudrais est celui ci:

    http://www.codeproject.com/Articles/...ng-sorting-and

    Pour télécharger le code, tu dois être membre. Je suis membre depuis plusieurs années, et je n'ai jamais eu de spam de leur part.

    Si tu veux dépasser la première page, la voici:

    http://www.codeproject.com/search.as...%3b3%3b13%3b14

    Même si j'ai mis VB dans ma requête, il y a visiblement aussi des choses en c# et des choses sans rapport avec un DataGridView.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour le forum,
    merci Graffito c'est bien comme ça que j'imaginai le processus, mon problème est que je n'arrive pas à manipuler le Header pour y ajouter un contrôle (image ou bouton)!

    merci Clément il y a bien un exemple qui traite de mon problème mais il faut installer une plateforme de test avec Sql Express 2005 ou 2008. je ne veux pas polluer ma config de développement; si je ne trouve pas je créerai une autre VM , mais j'espère avec l'aide du forum m’affranchir de cette étape.

    juste une piste du genre DataGridViwer.columns(1).header= new contrôle me comblerai de joie!

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

Discussions similaires

  1. Mise à jour bd sql server 2008 à partir du datagridview sous vb.net 2010
    Par TERRACHER dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2015, 20h35
  2. [vb.net 2010] Datagridview + BD access => problème
    Par jojo1284 dans le forum VB.NET
    Réponses: 12
    Dernier message: 14/01/2011, 11h37
  3. [VB.NET] Filtrer un datagridview
    Par olbi dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/04/2007, 13h19
  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, 09h09
  5. comment filtrer une table avec deux criteres càd 2 colonnes
    Par athmane2dz dans le forum Bases de données
    Réponses: 7
    Dernier message: 28/07/2004, 15h25

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