如何使许多controlParameter在ASP.NET中过滤GridView?

时间:2014-06-14 18:46:36

标签: c# asp.net gridview

我尝试根据DropDownList的值过滤gridview的内容。我设法用DropDownList过滤我的gridview,但是如何用多个DropDownList过滤?

这是我的aspx代码:

<asp:SqlDataSource ID="SqlDataSourceName" runat="server" ConnectionString="<%$ ConnectionStrings:connexionBase %>"
                                SelectCommand="SELECT DISTINCT nom FROM Utilisateur"></asp:SqlDataSource>
                            <asp:SqlDataSource ID="SqlDataSourceEntite" runat="server" ConnectionString="<%$ ConnectionStrings:connexionBase %>"
                                SelectCommand="SELECT DISTINCT entite FROM Utilisateur"></asp:SqlDataSource>


<div style="height: 350px; width: 100%; overflow: auto;">
                <asp:GridView ID="GridView1" Width="100%" Height="100%" HeaderStyle-BackColor="#21e3f0"
                    HeaderStyle-ForeColor="White" runat="server" AutoGenerateColumns="false" DataSourceID="GridDataSource"
                    ShowHeader="true">
                    <Columns>
                        <asp:BoundField DataField="Nom" HeaderText="Nom" ItemStyle-Width="80" />
                        <asp:BoundField DataField="Objectif operationnel" HeaderText="Objectif Opérationnel"
                            ItemStyle-Width="150" />
                        <asp:BoundField DataField="Description activite" HeaderText="Description activité"
                            ItemStyle-Width="80" />
                        <asp:BoundField DataField="Entite" HeaderText="Entité" ItemStyle-Width="80" />
                        <asp:BoundField DataField="Debut" HeaderText="Début" ItemStyle-Width="30" />
                        <asp:BoundField DataField="Fin" HeaderText="Fin" ItemStyle-Width="30" />
                        <asp:BoundField DataField="Cle" HeaderText="Clé" ItemStyle-Width="30" />
                        <asp:BoundField DataField="MAP" HeaderText="Map" ItemStyle-Width="30" />
                        <asp:BoundField DataField="SNS" HeaderText="SNS" ItemStyle-Width="30" />
                    </Columns>
                </asp:GridView>
            </div>
            <!-- SQL DataSource avec un filterExpression pour filter le tableau selon la valeur des ListBox choisi-->
            <asp:SqlDataSource ID="GridDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:connexionBase %>"
                SelectCommand="SELECT [Nom], [Objectif operationnel], [Description activite], [Entite], [Debut], [Fin], [Cle], [MAP], [SNS] FROM reponse"
                FilterExpression="Nom = '{0}'">
                <FilterParameters>
                    <asp:ControlParameter Name="Nom" ControlID="NomPersonne" PropertyName="SelectedValue"
                        ConvertEmptyStringToNull="false" />
                    <asp:ControlParameter Name="Nom" ControlID="NomEntite" PropertyName="SelectedValue"
                        ConvertEmptyStringToNull="false" />
                </FilterParameters>
            </asp:SqlDataSource>

编辑:我的DropDownList控件(由用户选择值来过滤gridview)

<asp:DropDownList ID="NomPersonne" runat="server" AutoPostBack="True" DataSourceID="SqlDataSourceName"
                                DataTextField="nom" DataValueField="nom" AppendDataBoundItems="true" CssClass="DropDownList">
                                <asp:ListItem Text="" Value="" />
                            </asp:DropDownList>

<asp:DropDownList ID="NomEntite" runat="server" AutoPostBack="True" DataSourceID="SqlDataSourceEntite"
                                DataTextField="entite" DataValueField="entite" AppendDataBoundItems="true" CssClass="DropDownList">
                                <asp:ListItem></asp:ListItem>
                            </asp:DropDownList>

1 个答案:

答案 0 :(得分:0)

您的过滤器表达式应如下所示:

   FilterExpression="Nom like '%{0}%' OR Entite like '%{1}%'">

并且表达式可能会有所不同,具体取决于您的字段的数据类型和条件, 例如,如果您的数据字段值为整数且条件为 AND ,那么您可以使用以下内容:

   FilterExpression="Nom={0} AND Entite={1}"> 

并且您还应该在<FilterParameters>上为名称属性设置正确的名称,如下所示:

   <FilterParameters>
         <asp:ControlParameter Name="Nom" ControlID="NomPersonne" 
                PropertyName="SelectedValue" ConvertEmptyStringToNull="false" />
         <asp:ControlParameter Name="Entite" ControlID="NomEntite" 
                PropertyName="SelectedValue" ConvertEmptyStringToNull="false" />
   </FilterParameters>