0

目前,我正在使用下面的代码根据我在下拉列表中选择的内容过滤我的网格视图,该下拉列表调用填充它的 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;
    }

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

4

1 回答 1

0

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

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

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

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

于 2013-05-17T09:28:38.870 回答