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:
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()) )>=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