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

ASP.NET Discussion :

Filtrer un GridView en C# en fonction de liste déroulante


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 28
    Points : 21
    Points
    21
    Par défaut Filtrer un GridView en C# en fonction de liste déroulante
    Bonjour à tous !

    J'espere etre dans la bonne catégorie du forum,

    J’ai créé un gridView comme ci en asp net :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <asp:GridView ID="grd_risqueAreviser" runat="server" CssClass="mydatagrid" PagerStyle-CssClass="pager"
     HeaderStyle-CssClass="header" RowStyle-CssClass="rows"
          AutoGenerateColumns="False" DataKeyNames="POI_id" 
          DataSourceID="ERP_pointAreviser" 
          OnRowDataBound = "grd_risqueAreviser_RowDataBound" OnRowCommand="grd_risqueAreviser_RowCommand">
                <Columns>
                    <asp:BoundField DataField="POI_id" HeaderText="Num." ReadOnly="True" 
                        SortExpression="POI_id" />
                    <asp:BoundField DataField="POI_situation" HeaderText="Situation" 
                        SortExpression="POI_situation" />
                    <asp:BoundField DataField="EVA_couleur" HeaderText="Eval." 
                        SortExpression="EVA_couleur" />
                    <asp:BoundField DataField="USE_cdsid" HeaderText="Responsable" 
                        SortExpression="USE_cdsid" />
                    <asp:BoundField DataField="POI_dateRevision" HeaderText="Date Révision" 
                        SortExpression="POI_dateRevision" />
     
                    <asp:TemplateField>
                          <ItemTemplate>
                            <asp:Button class="btn btn-primary"  ID="btn_goToPoint" runat="server" 
                              CommandName="goToPoint" 
                        CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
                              Text="►" />
                          </ItemTemplate> 
                        </asp:TemplateField>
     
                </Columns>
                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            </asp:GridView>
     
      <asp:SqlDataSource ID="ERP_pointAreviser" runat="server" 
          ConnectionString="<%$ ConnectionStrings:ERPConnectionString %>" SelectCommand="SELECT T_POINT.POI_id, T_POINT.POI_situation, EVA_couleur,T_POINT.USE_cdsid, POI_dateRevision 
            FROM T_POINT
            LEFT OUTER JOIN TR_EVALUATION ON T_POINT.EVA_id = TR_EVALUATION.EVA_id
            WHERE POI_actif  = 1
            AND DATEDIFF(month, POI_dateRevision, CONVERT (date, GETDATE()) )&gt;=9">
      </asp:SqlDataSource>
    J’aimerai sur ce tableau appliquer des filtres sur certains champs (on ne releve que les point de la date 04/05/06 ) par exemple, pour cela des listes deroulantes remplis avec un selec t DISTINCT nous permette de choisir les champs à filtrer et sur quelle valeur, enfin un bouton « appliquer filtre » permet d’appliquer l’ensemble des filtres.

    Au début je pensais faire en c# ERP_pointAreviser.CommandText = « … » pour chaque possibilité, cependant j’ai 11 champs pour les filtres ce qui fait un beaucoup de possibilité et au moins 60 requêtes à écrire…

    J’ai bien trouvé quelques articles sur Microsoft mais je n’arrive pas a les appliquer dans mon cas…

    Avez-vous une solution pour faire cela rapidement, comme faire 11 if pour chaque champs et a chaque fois on fait en c# :
    ERP_pointAreviser.SelectCommand.addFillter = “date = txt_date.text”
    Et après tous les if on a notre commandText qui contient la requete finale avec tous les where et si rien n’est selectionné pas de where ajouté à la requete, cela serait l’idéal !!! Car je ne me vois pas écrire 50 requêtes voir plus afin de toucher à tous les cas possibles.

    Merci par avance !

    Damien

  2. #2
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Bonjour damienla,

    Vous pourriez essayer de créer dynamiquement la requête dans le code behind, puis l'affecter à l'élément ERP_pointAreviser.

    Je pense à quelque chose du type
    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
     
    StringBuilder requete = new StringBuilder()
    .AppendLine("SELECT T_POINT.POI_id, T_POINT.POI_situation, EVA_couleur,T_POINT.USE_cdsid, POI_dateRevision")
    .AppendLine("FROM T_POINT")
    .AppendLine("LEFT OUTER JOIN TR_EVALUATION ON T_POINT.EVA_id = TR_EVALUATION.EVA_id")
    .AppendLine("WHERE POI_actif  = 1");
    if(<CONDITION1>)
    {
       requete.AppendLine(<SQL>);
    }
    ...
    this.ERP_pointAreviser.SelectCommand = requete.ToString();
    this.grd_risqueAreviser.DataSource = this.ERP_pointAreviser;
    this.grd_risqueAreviser.DataBind();
    ...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Veuillez m'excuser pour le temps de réponse mais c'est exactement ce que je voulais.

    Merci !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/05/2009, 23h54
  2. Réponses: 1
    Dernier message: 24/08/2007, 13h46
  3. Réponses: 15
    Dernier message: 14/07/2007, 21h12
  4. Réponses: 1
    Dernier message: 04/05/2007, 13h15
  5. Problème fonction affichage listes déroulantes
    Par JLDR69 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/09/2006, 20h06

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