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

Dotnet Discussion :

[.NET] Bonne pratiques Utilisation des dataview


Sujet :

Dotnet

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 68
    Points : 33
    Points
    33
    Par défaut [.NET] Bonne pratiques Utilisation des dataview
    Bonjour,

    Je travail actuellement sur un projet en VB.NET et je me retrouve face a une difficulté conceptionnelle concernant l'utilisation du RowFilter sur un dataView

    je veux faire un filtre sur une colonne qui a 6 possibilités de valeur.

    le filtre est déclenché par 6 CheckBoxes

    Ce qui me donne 2^6 (si je me trompe pas ) possibilités d'affichages cequi est lourd à gérer avec des conditions IF / Select case

    Ma question est: Existe t'il une astuce spécifique ou je dois me taper les 2^
    6 conditions?

    Est ce que le RowFilter se trouve limité et existe t il une autre méthode?

    Merci d'avance !

    gab

  2. #2
    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 754
    Points
    39 754
    Par défaut
    Pourquoi 2^6, si la colonne n'a que 6 valeurs possibles ? Je ne suis pas sûr de bien comprendre ton problème... Pourrais-tu donner des éléments plus concret pour qu'on comprenne bien (par exemple les valeurs possibles de la colonne) ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 68
    Points : 33
    Points
    33
    Par défaut
    ok le logiciel permet la gestion de formulaire.

    il y a 6 états :

    1. crée
    2. Approuvé Manager
    3. Approuvé Qualité
    4. Mise en Oeuvre
    5. Approuvé Utilisateurs ( = Clos)
    6. Rejeté

    un formulaire peut avoir les Etat de 1 à 6

    L'affichage de mon dataview reprend tout les formulaire (de manière unique) avec l'Etat en cours
    Je veux a partir d'un jeu de 6 CheckBox pouvoir afficher les etats que je veux :

    pouvoir afficher les formulaire approuvé manager et les formulaire approuvé Utilisateur par ex.

    merci :=)

  4. #4
    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 754
    Points
    39 754
    Par défaut
    Bah il suffit de faire un "OR" alors... Par exemple si tu coches les cases 1 et 3, tu vas générer un filtre comme ça : "ETAT = 1 OR ETAT = 3"

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var conditions = new List<string>();
    if (checkBoxCréé.Checked)
        conditions.Add("ETAT = 1");
    if (checkBoxApprouvéManager.Checked)
        conditions.Add("ETAT = 2");
    if (checkBoxApprouvéQualité.Checked)
        conditions.Add("ETAT = 3");
    ...
     
    string filter = string.Join(" OR ", conditions);
    Ca fait donc 6 "if", et non 2^6...

    En fait tu peux même faire mieux que ça : tu mets toutes tes CheckBox dans un tableau, et tu mets la condition de chacune dans le Tag. Ensuite tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var conditions = checkBoxesEtat.Where(c => c.Checked).Select(c => (string)c.Tag));
    string filter = string.Join(" OR ", conditions);

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 68
    Points : 33
    Points
    33
    Par défaut
    Top! Merci toplev!

    j'ai choisi la première solution! c'est bien plus clean que ce que j'avais prévu au départ!
    voici mon code en VB :

    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
    Dim conditions = New List(Of String)
     
            If (CKB_Etat1.Checked = True) Then
                conditions.Add("Etat Actuel ='Formulaire Crée'")
            End If
            If (CKB_Etat2.Checked = True) Then
                conditions.Add("Etat Actuel ='Approuvé Manager'")
            End If
            If (CKB_Etat3.Checked = True) Then
                conditions.Add("Etat Actuel = 'Approuvé AQ'")
            End If
            If (CKB_Etat4.Checked = True) Then
                conditions.Add("Etat Actuel = 'Création du Compte'")
            End If
            If (CKB_Etat5.Checked = True) Then
                conditions.Add("Etat Actuel ='Formulaire Cloturé'")
            End If
            If (CKB_Etat6.Checked = True) Then
                conditions.Add("Etat Actuel ='Formulaire Rejeté'")
            End If
     
     Dim filter As String = String.Join(" OR ", conditions.ToArray())
            dv.RowFilter = filter
    Cdt,

    Gab

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/05/2012, 12h49
  2. Réponses: 10
    Dernier message: 04/09/2009, 15h06
  3. [VB.Net][Fichier ini] utilisation des API
    Par DonF dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/03/2009, 14h32
  4. [ASP.NET 2.0] Utilisation des roles
    Par bizet dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/06/2007, 12h06

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