有没有其他方法来过滤网格视图?

时间:2013-05-17 09:13:13

标签: c# asp.net gridview drop-down-menu asp.net-controls

目前我正在使用下面的代码根据我在下拉列表中选择的内容来过滤我的gridview,该下拉列表调用填充它的SQL语句。

 protected void SetYear(object sender, EventArgs e)
    {
        DropDownList ddl = (DropDownList)sender;
        if (filter != null)
        {
            if (filter.ContainsKey("Year 1"))
            {
                foreach (ListItem li in ddl.Items)
                {
                    if (li.Text == filter["Year 1"].ToString().Substring(2, filter["Year 1"].ToString().Length - 3))
                    {
                        li.Selected = true;
                        return;
                    }
                }
            }
        }
    }
    protected void DropDownList1_SelectedIndexChanged1(object sender, EventArgs e)
    {
        DropDownList dd = (DropDownList)sender;
        if (dd.SelectedItem.Text != "Please Select")
        {
            if (filter.ContainsKey("Year 1"))
            {
                filter["Year 1"] = "='" + dd.SelectedItem.Text + "'";
            }
            else
            {
                filter.Add("Year 1", "='" + dd.SelectedItem.Text + "'");
            }
        }
        else
        {
            filter.Remove("Year 1");
        }
        ApplyGridFilter();
        GridView1.PageIndex = 0;
    }

我想知道是否还有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

你做的方式很好。您可以使用更新面板来避免完整的回发。其他方式就像,

第一次在页面加载时获取结果,并且后续请求过滤数据表本身中的记录。

dt.DefaultView.RowFilter = "Name LIKE 'XXX' "

此外,如果您使用集合,则使用LINQ过滤记录。但是所有这些方法都不会给你最新的记录。