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 :

Alimenter datagridview selon selection d'une combobox [Fait]


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Alimenter datagridview selon selection d'une combobox
    Bonjour, je débute en C# et j'ai beau eu chercher je n'ai pas trouver concretement ce que voulais.

    J'ai une base de donnée mySQL

    EDIT :

    finalement j'ai 3 tables, voici le MLD des 3 tables (en simplifié)

    FOIRE (année, lib_foire);

    INSCRIPTION_FOIRE (#année, num_inscription, date_inscription, #id_participant);

    PARTICIPANT (id_participant, enseigne, nom, prenom);

    J'ai mon combobox cb_choixfoire, dans lequel je selectionne une année
    et dans mon datagridview dgv_participant_inscrit je veux afficher les participants inscrit l'année du combobox.

    Si vous aviez un modele,
    en vous remerciant d'avance

    Cordialement, bco-style

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Je te suggere de regarder ce tuto pour commencer.
    'est la base de ADO.NET.
    Ensuite le mécanisme sera le suivant.
    Sur un event (soit changement de valeur de ta combo, soit sur un click de bouton) tu vérifies quelles est la valeur et tu crées ta requête dynamiquement, puis tu affectes le résultat a ton dgv.
    je vais pas être sympa, mais je ne peux pas te donner la reponse toute faite il faut que tu cherches un peu.
    Bon courage.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il y a une autre solution que de refaire la requête sur le changement du combobox...
    Si la quantité de données n'est pas trop importante, tu peux tout charger dans un DataTable, lier le DataGridView au DataTable via un BindingSource, et jouer sur la propriété Filter de BindingSource. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void comboBoxAnnee_SelectedIndexChanged(object sender, EventArgs e)
    {
        bindingSource.Filter = "ANNEE = " + comboBoxAnnee.Value;
    }

    Ce sera beaucoup plus réactif qu'en réexécutant la requête à chaque fois

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    pas mal ca, je ne le savais pas.
    Quand tu dis pas beaucoup de données, c'est a peu pres combien de ligne?
    Et est ce que si tu as 10 criteres c'est aussi bien de faire ca ou vaut mieux reexecuter la requete?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par skunkies Voir le message
    Quand tu dis pas beaucoup de données, c'est a peu pres combien de ligne?
    Ben faut voir selon les cas... en général jusqu'à quelques milliers de lignes ça passe sans problème. Mais c'est sûr que s'il y en a quelques millions il faut pas tout charger en mémoire

    Citation Envoyé par skunkies Voir le message
    Et est ce que si tu as 10 criteres c'est aussi bien de faire ca ou vaut mieux reexecuter la requete?
    Si tous les critères sont disponibles dans la table, il est toujours plus rapide de filtrer les données en mémoire. Tu peux combiner les critères avec AND ou OR. La syntaxe des filtres est la même que pour les expressions de colonne (cf. la doc)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    C'est quoi RowFilter dans ton exemple?

  7. #7
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    hum merci pour les réponses

    en fait finalement j'ai 3 tables, voici le MLD des 3 tables (en simplifié)

    FOIRE (année, lib_foire);

    INSCRIPTION_FOIRE (#année, num_inscription, date_inscription, #id_participant);

    PARTICIPANT (id_participant, enseigne, nom, prenom);

    J'ai mon combobox cb_choixfoire, dans lequel je selectionne une année
    et dans mon datagridview dgv_participant_inscrit je veux afficher les participants inscrit l'année du combobox.

    J'ai crée le bindingsource mais je ne comprends pas l'utilisation du rowfilter??

    Si je réussi sa mon stage avancera grandement étant donné que c'est presque que de sa

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par skunkies Voir le message
    C'est quoi RowFilter dans ton exemple?

    oups... en fait je pensais à la propriété Filter de BindingSource. RowFilter est une propriété de DataView (c'est d'ailleurs une autre possibilité pour filtrer les données)
    Je corrige mon post

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par bacio Voir le message
    J'ai crée le bindingsource mais je ne comprends pas l'utilisation du rowfilter??
    J'avais mis une connerie dans mon post, c'est corrigé (cf. ci-dessus)...

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    @Tomlev:
    Je n'ai pas de DataBinding dans mon projet mais je travaille plutôt avec un dataset et datatable.
    Est ce que cela reviendrait au même de faire le filtrage au niveau du datatable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string filter  = "ANNEE = " + comboBoxAnnee.Value;
     dt.Select(filter);
    dgv.DataSource = dt
    ?
    ou vaut mieux faire le binding d'un DataBinding avec un datatable?

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par skunkies Voir le message
    @Tomlev:
    Je n'ai pas de DataBinding dans mon projet mais je travaille plutôt avec un dataset et datatable.
    Est ce que cela reviendrait au même de faire le filtrage au niveau du datatable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string filter  = "ANNEE = " + comboBoxAnnee.Value;
     dt.Select(filter);
    dgv.DataSource = dt
    ?
    ou vaut mieux faire le binding d'un DataBinding avec un datatable?
    DataBinding ? Tu veux dire BindingSource je suppose...
    Le code que tu indiques ne fonctionnera pas : dt.Select renvoie une collection de DataRows, si tu ne récupères pas le résultat ça ne sert à rien...
    Pour utiliser le filtrage sans BindingSource, tu peux utiliser une DataView :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string filter  = "ANNEE = " + comboBoxAnnee.Value;
    DataView dv = new DataView(dt);
    dv.RowFilter = filter;
    dgv.DataSource = dv
    Mais si tu veux pouvoir gérer un binding entre plusieurs contrôles, il vaut mieux utiliser une BindingSource, parce que ça gère aussi l'élément courant d'une collection, ce qui permet de mettre à jour automatiquement un contrôle en fonction de l'élément sélectionné dans un autre (utile pour les vues maître/détails par exemple)

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    oui c'est bien BindingSource.
    Mon idée était de savoir comment modifier ce que j'ai actuellement en faisant le moins de modification possible.
    parce que effectivement c'est plus rapide et plus efficace qeu de faire une requête a chaque fois.

    Merci de tes explications CLAIRES.

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 18h26
  2. Alimenter combobox selon selection d'une autre combobox
    Par bacio dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/02/2009, 12h33
  3. [VBA-E] [Débutant] selection dans une combobox
    Par Jerez62 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 07/01/2007, 21h23
  4. [C#] Selection dans une comboBox
    Par ShinS16 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/01/2006, 02h58
  5. Réponses: 14
    Dernier message: 25/11/2005, 15h22

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