Recherche par Critères, Un champ "Tout"

586me Messages postés 3 Date d'inscription lundi 5 août 2013 Statut Membre Dernière intervention 7 août 2013 - 5 août 2013 à 16:41
586me Messages postés 3 Date d'inscription lundi 5 août 2013 Statut Membre Dernière intervention 7 août 2013 - 7 août 2013 à 15:04
J'ai besoin d'une idée..
je viens de faire une recherche par plusiers critères, tout mes champs sont des dropdownlist, ça a bien marché, mais le problème C que dans chaque dropdownlist j'ai ajouté un champ "Tout" par exemple "tout les fournisseurs"dans la dropdownlist fournisseurs , la question est comme suit :
Comment je vais gerer par exemple le fait qu'en meme temps deux ou trois dropdownlist auraient en meme temps la valeur "tout" ou ...ou .. , ya pluuuuuusieurs cas !!!
Merciii d'avance

6 réponses

dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
6 août 2013 à 09:38
Salut,

Désolé mais j'ai rien compris....
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
6 août 2013 à 10:34
Je crois comprendre que en gros tu veux faire des filtres de données comme dans Excel

Il faudrait que tu mettes le code de ta requête actuelle.
Tu ne précises même pas s'il s'git d'une requête sql sur une base de données, ou une requête Linq sur une List<T> ou encore un autre type de requête.

Comment veux tu que l'on puisse te répondre.
0
586me Messages postés 3 Date d'inscription lundi 5 août 2013 Statut Membre Dernière intervention 7 août 2013
Modifié par ichiriac le 6/08/2013 à 14:08
Il s'agit d'une requete LINQ, voila ma méthode de recherche multicritères:

  public Object liste_recherche(int four, string fct, string etat,int ag, string fbp, string deloc, string caiss, string exter)
          {
              var req = from g in db.GABs
                        join fb in db.fondations on g.fk_numfbp equals fb.num_fond
                        join s in db.site_delocs on g.fk_numdeloc equals s.num_deloc
                        join f in db.fournisseurs on g.fk_numfournisseur equals f.numfournisseur
                        join t in db.types on g.fk_type equals t.ID
                        join fc in db.fonctions on g.fk_fonctiongab equals fc.fonction1
                        join e in db.Etats on g.fk_etat equals e.etat1
                        where g.fk_fonctiongab == fct && g.fk_numfournisseur==four && g.fk_cdagence==ag && g.fk_etat==etat
                        && g.bool_fbp==fbp && g.bool_deloc== deloc && g.bool_caissettes==caiss && g.bool_extern==exter
                        
                        select new
                        {

                            ID = g.numGab,
                            FBP = fb.site_fond,
                            Délocalisé = s.site_deloc1,
                            Fournisseur = f.nomfournisseur,
                            Type = t.type1,
                            NDeSérie = g.nserie,
                            Fonction = fc.fonction1,
                            Etat = e.etat1,
                            Externalisé = g.bool_extern,
                            Aqcuisition = g.date_acquisition

              };
              return req;
          }


j'espère que vous avez un peu compris de quoi ça s'agit ce bout de code:
Merci Infiniment d'avance :)
0
ichiriac Messages postés 195 Date d'inscription lundi 28 janvier 2013 Statut Membre Dernière intervention 13 janvier 2017 3
6 août 2013 à 14:19
Salut 586me,

Au lieu de tout écrire en un seul bloc, tu peux essayer de composer ta request au fut et à mesure :

Imaginons que si les valeurs sont vides dans ce cas tu ne souhaites pas appliquer le filtre ...

public Object liste_recherche(int four, string fct, string etat ... ) {
    var req = from g in db.GABs
            join fb in db.fondations on g.fk_numfbp equals fb.num_fond
            join s in db.site_delocs on g.fk_numdeloc equals s.num_deloc
            join f in db.fournisseurs on g.fk_numfournisseur equals f.numfournisseur
            join t in db.types on g.fk_type equals t.ID
            join fc in db.fonctions on g.fk_fonctiongab equals fc.fonction1
            join e in db.Etats on g.fk_etat equals e.etat1
            select new
            {
    
                ID = g.numGab,
                FBP = fb.site_fond,
                Délocalisé = s.site_deloc1,
                Fournisseur = f.nomfournisseur,
                Type = t.type1,
                NDeSérie = g.nserie,
                Fonction = fc.fonction1,
                Etat = e.etat1,
                Externalisé = g.bool_extern,
                Aqcuisition = g.date_acquisition
    
            };
    if ( four > 0 ) {
        req = req.Where(g => g.fk_numfournisseur == four );
    }
    if ( !string.IsNullOrEmpty(fct) ) {
        req = req.Where(g => g.fk_fonctiongab == fct );
    }
    if ( !string.IsNullOrEmpty(etat) ) {
        req = req.Where(g => g.fk_etat == etat );
    }
    // etc ...
    return req;
}


C'est à faire sur l'ensemble des critères optionnels ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
6 août 2013 à 20:52
Bonsoir,
il y a aussi la possiblité d'utiliser Linq Dynamique, voir ici
http://www.e-naxos.com/Blog/post/Donner-du-peps-a-Linq-!-(Linq-dynamique-et-parser-dexpressions).aspx

Par contre, j'ai été dérouté par le fait que la syntaxe ne semble pas être en c#.
Du coup j'avais aussi trouvé la possibilité de compiler dynamiquement la classe qui contient la requête.
http://codes-sources.commentcamarche.net/forum/affich-1610899-linq-to-object-type-de-sortie-modulable


Mais je crois que dans ton cas le plus simple est de faire plusieurs requête avec des if comme le suggère Ichiriac
0
586me Messages postés 3 Date d'inscription lundi 5 août 2013 Statut Membre Dernière intervention 7 août 2013
7 août 2013 à 15:04
Merci beaucoup pour vos réponses, cela m'a donné plusieurs idées..
0
Rejoignez-nous