使用下拉列表筛选网格视图

本文关键字:网格 视图 筛选 下拉列表 | 更新日期: 2023-09-27 18:25:18

我想用下拉列表筛选我的GridView,以便只显示与所选下拉项相关的结果。我已经找到了很多Sql数据源的例子,但是我使用的是ObjectDataSource。

这是我的GridViewDropdown 的代码

<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,以便在初始页面加载中查看所有记录。