我尝试根据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>
答案 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>