将Filter Expression动态添加到Gridview以过滤两列

时间:2014-10-08 19:32:41

标签: c# asp.net gridview

请参阅以下代码:

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlDataSource1.FilterExpression = "";
        foreach (ListItem l in CheckBoxList1.Items)
        {
            if (l.Selected)
            {
                HD1.Value += l.Value + ",";
                if (SqlDataSource1.FilterExpression == "")
                    SqlDataSource1.FilterExpression += " TSOType like '" + l.Value + "%'";
                else
                {
                    SqlDataSource1.FilterExpression += "or TSOType like '" + l.Value + "%'";
                }

            }
        }
    }

当复选框中的项目被选中时,我动态地将过滤器表达式分配给Gridview。当Cloumn“TSOType”符合要求时,这将给出我预期的结果。我现在想要的是向FilterExpression添加一个列过滤器。例如,现在我有

SqlDataSource1.FilterExpression += " TSOType like '" + l.Value + "%'";

但我想把它变成

SqlDataSource1.FilterExpression += " TSOType like '" + l.Value + "%' + TSOStatus like '" + j.Value + "%'";

我该怎么编码,我还需要另一个for循环吗?

1 个答案:

答案 0 :(得分:0)

  

SqlDataSource控件仅支持过滤数据   DataSet模式。

有关详细信息,请参阅here。因此,为DataSourceMode="DataSet"对象添加SqlDataSource

您可以使用AND运算符为FilterExpression

添加多个条件
SqlDataSource1.FilterExpression += " TSOType like '" + l.Value + "%' + AND TSOStatus like '" + j.Value + "%'";