2014-10-08 107 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 + "%'";