使用下拉列表筛选网格视图
本文关键字:网格 视图 筛选 下拉列表 | 更新日期: 2023-09-27 18:25:18
我想用下拉列表筛选我的GridView
,以便只显示与所选下拉项相关的结果。我已经找到了很多Sql数据源的例子,但是我使用的是ObjectDataSource。
这是我的GridView
和Dropdown
的代码
<asp:DropDownList ID="DropDownList2" runat="server" >
<asp:ListItem Text="Person1" Value="Name"></asp:ListItem>
<asp:ListItem Text="Person2" Value="Name"></asp:ListItem>
<asp:ListItem Text="Person3" Value="Name"></asp:ListItem>
<asp:ListItem Text="Person4" Value="Name"></asp:ListItem>
</asp:DropdownList>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging" DataSourceID="ObjectDataSource1" >
<PagerSettings Mode="NumericFirstLast" FirstPageText="First" LastPageText="Last" PageButtonCount="30" />
<PagerStyle CssClass="Pager" Font-Size="Large" Height="50px"/>
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" SortExpression="" >
<HeaderStyle Width="45%" />
<ItemStyle HorizontalAlign="Center" Height="85px" Width="40%" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" />
</asp:BoundField>
<asp:BoundField DataField="Job" HeaderText="Department" ReadOnly="True" SortExpression="" >
<ItemStyle Width="30%" HorizontalAlign="Center" Height="85px" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" />
</asp:BoundField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="Names" SelectMethod="NamesData" />
因此,我希望如果用户从下拉列表中选择Person1,GridView将只显示这些结果。欢迎提出任何建议!
更新
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
ObjectDataSource1.FilterExpression = "Person=" + DropDownList2.SelectedValue;
}
我已经尝试过了,但得到了以下错误:
System.Data.SyntaxErrorException:语法错误:"Person"运算符后缺少操作数。
显然,要过滤记录,您必须在NamesData
中进行第一次更改,以便它接受一个参数并返回过滤后的记录。
接下来,在ObjectDataSource控件中添加带有SelectParameters
标记的参数,如下所示:-
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="Names"
SelectMethod="NamesData">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList2" DefaultValue=""
Name="personName" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
这里,personName
是要添加到NamesData
方法中的参数的名称。此外,您必须相应地设置DefaultValue
,以便在初始页面加载中查看所有记录。