2014-10-08 86 views
0

请参见下面的代码:动态过滤表达式添加到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 + "%'"; 

我应该如何编写这一点,我需要另一个用于循环?

+0

哪里是'j'来自的价值? – 2014-10-08 20:30:31

+0

@DennisR如果我创建的话,它来自另一个checkboxlist。 – Ivancao 2014-10-08 21:22:04

回答

0

SqlDataSource控制仅在 DataSet模式时支持筛选数据。

详情请参阅here。所以为SqlDataSource对象添加DataSourceMode="DataSet"

你也可以使用AND运算符将多个条件为FilterExpression

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