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 :

Filtre de binding source sur une trentaine de checkbox


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut Filtre de binding source sur une trentaine de checkbox
    Bonjour.
    J'ai un filtre a établir sur un bindingsource, qui doit être construit à partir de checkbox (une trentaine).
    Ma question est donc de savoir s'il existe une procédure permettant d'établir le filtre plus rapidement que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(checkbox.checked && checkbox2.checked && ...)
    {
        filte = blabla;
    }
    if(!checkbox.checked && checkbox2.checked && ...)
    {
        filtre = blibli;
    }
    Car sinon, j'en ai pour des années à coder toutes les possibilités
    Merci d'avance
    Cordialement
    doudouallemand

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Tes checkbox rajoutent chacun un filtre je suppose ? Si c'est le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach(Control c in this.Controls)
    {
      if (c is CheckBox && ((CheckBox)c).Checked)
        tonFiltre.Add(...);
    }

  3. #3
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Tes checkbox rajoutent chacun un filtre je suppose ? Si c'est le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach(Control c in this.Controls)
    {
      if (c is CheckBox && ((CheckBox)c).Checked)
        tonFiltre.Add(...);
    }
    Oui, c'est cela.
    Le problème, c'est que pour certains ils doivent se faire en "AND" avec d'autre, etsinon en "OR ", en fonction des colonnes (AND dans une même colonne, OR entre deux colonnes)
    C'est plus cela mon probleme
    merci

  4. #4
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    personne n'a d'idée ?
    je pense pas être le premier à qui arrive ce problème quand même (même si je n'ai rien trouvé dans mes recherches de réponses)

  5. #5
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Mais au fait, c'est quoi ton filtre ? Un prédicat ? Une chaîne que tu fournis à une DataView ?

  6. #6
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Mais au fait, c'est quoi ton filtre ? Un prédicat ? Une chaîne que tu fournis à une DataView ?
    je sais pas ce que c'est qu'un prédicat donc, je te dirai pas, mais pour le moment, c'est une chaine de caratères que j'applique sur le paramètre filter de mon bindingsource, sur lequel est lié un datagridview

  7. #7
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Instant culture :
    Un prédicat est une méthode qui prend un paramètre et qui renvoie un booléen.

    Mais il y a quoi derrière le BindingSource ? Parce qu'il ne fait que transmettre le filtre à sa propre DataSource. je suppose que c'est une DataView/DataTable, et que tu utilise donc la syntaxe d'expressions propre à ADO.Net. Le plus propre est je pense de faire une méthode (ou plusieurs petites si il y a du code factorisable) qui va construire ton filtre en fonction de tes 30 paramètres booléens. Si tu dis que ton expression finale contient est OR et des AND, toi seul connaît la logique qui associe à tes p'tits booléens cette expression, il faudra donc bien la coder.

  8. #8
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Instant culture :
    Un prédicat est une méthode qui prend un paramètre et qui renvoie un booléen.

    Mais il y a quoi derrière le BindingSource ? Parce qu'il ne fait que transmettre le filtre à sa propre DataSource. je suppose que c'est une DataView/DataTable, et que tu utilise donc la syntaxe d'expressions propre à ADO.Net. Le plus propre est je pense de faire une méthode (ou plusieurs petites si il y a du code factorisable) qui va construire ton filtre en fonction de tes 30 paramètres booléens. Si tu dis que ton expression finale contient est OR et des AND, toi seul connaît la logique qui associe à tes p'tits booléens cette expression, il faudra donc bien la coder.
    ok, je vois.
    c'est pas que ca m'arrange mais bon, ...
    sinon, oui, y'a un datatable après, connecté sur une base sql serveur

  9. #9
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Bonjour.

    Je partirai plutôt sur un CheckBox personnalisé.

    Avec un propriété qui permet de définir la condition "AND/OR", le nom de la colonne à filtrer, la valeur à tester et une function qui fournit le texte à ajouter dans le filtre par exemple "AND Macolonne = '1000'" déduite de la condition, la colonne, la valeur et le checked du checkbox.

    Ensuite pour construire le filtre il suffit d'itérer sur ces checkbox perso et d'ajouter le résultat de la function au filtre.

    Cdt.

  10. #10
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Bonjour.

    Je partirai plutôt sur un CheckBox personnalisé.

    Avec un propriété qui permet de définir la condition "AND/OR", le nom de la colonne à filtrer, la valeur à tester et une function qui fournit le texte à ajouter dans le filtre par exemple "AND Macolonne = '1000'" déduite de la condition, la colonne, la valeur et le checked du checkbox.

    Ensuite pour construire le filtre il suffit d'itérer sur ces checkbox perso et d'ajouter le résultat de la function au filtre.

    Cdt.
    oui, ca pourrait
    le seul problème : le client!!
    il veut ces combobox..

  11. #11
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Re.

    Citation Envoyé par doudouallemand Voir le message
    oui, ca pourrait
    le seul problème : le client!!
    il veut ces combobox..
    Tu dois vouloir parle de ses CheckBox.

    C'est pas problématique si tu peux hérité du CheckBox de ton client.

    Sinon, c'est partie pour la solution à base de IF !

    Cdt.

  12. #12
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Re.



    Tu dois vouloir parle de ses CheckBox.

    C'est pas problématique si tu peux hérité du CheckBox de ton client.

    Sinon, c'est partie pour la solution à base de IF !

    Cdt.
    oui, je parlais de checkbox
    par contre, j'ai pas tout compris sur ton histoire d'héritage associé à ton poste précédent...

  13. #13
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Re.

    Je suppose que si ton client veut que tu utilises SES checkbox, c'est car ils sont customisés visuellement par exemple.

    Malgré tout, ça m'étonnerait qu'il ait positionné un NotInheritable sur cette classe. Donc tu peux toujours créer une classe qui héritera de ce type... et tu contourneras donc le CDC qui dit que tu dois utiliser les checkbox du client.

    Au lieu d'avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Public Class CustomCB 
    Inherits CheckBox
    Tu auras :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Public Class CustomCB 
    Inherits CheckBoxDuClient
    Cdt.

Discussions similaires

  1. binding click sur une select multiple perso
    Par Setsuna_00 dans le forum jQuery
    Réponses: 3
    Dernier message: 29/07/2011, 14h31
  2. [MVVM] Binding TwoWay sur une combobox
    Par Digilougm dans le forum Silverlight
    Réponses: 5
    Dernier message: 21/06/2011, 11h06
  3. Réponses: 2
    Dernier message: 20/07/2009, 10h01
  4. Binding impossible sur une custom ListBox
    Par tucod dans le forum Silverlight
    Réponses: 4
    Dernier message: 23/03/2009, 14h44
  5. créer un projet à partir de source sur une autre partition
    Par julien.63 dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 22/08/2007, 15h28

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