2013-06-26 65 views
1

我在dataview rowfilter中遇到了一个小问题。 如何处理dataview rowfilter.i中的文本框空值在此过滤器中使用OR运算符。 请帮助引导我在这个问题。到目前为止我使用下面的代码。DataView RowFillter like运算符

Column1 = string.IsNullOrEmpty(txtColumn1.Text) ? "" : "%" + txtColumn1.Text + "%"; 
Column2 = string.IsNullOrEmpty(txtColumn2.Text) ? "" : "%" + txtColumn2.Text + "%"; 
Column3 = string.IsNullOrEmpty(txtColumn3.Text) ? "" : "%" + txtColumn3.Text + "%"; 

dataView.RowFilter = @"Column1 like '" + Column1 + "'" + "OR Column2 like '" + Column2 + "'" + "OR Column3 like '" + Column3 + "'"; 

回答

5

下面的代码片段将帮助您控制具有空值的过滤。 Plase尝试并标记的答案,如果有用

StringBuilder filter = new StringBuilder(); 
if (!(string.IsNullOrEmpty(textBox1.Text))) 
    filter.Append("Column1 Like '%" + textBox1.Text + "%'"); 

if (!(string.IsNullOrEmpty(textBox2.Text))) 
{ 
    if (filter.Length > 0) filter.Append(" OR "); 
    filter.Append("Column2 Like '%" + textBox2.Text + "%'"); 
} 

if (!(string.IsNullOrEmpty(textBox3.Text))) 
{ 
    if (filter.Length > 0) filter.Append(" OR "); 
    filter.Append("Column3 Like '%" + textBox3.Text + "%'"); 
} 

DataView dv = dt.DefaultView; 
dv.RowFilter = filter.ToString(); 
+0

我想你的code.but如果我不给它引发异常像TextBox1中值是“语法错误:之前‘或’运算符缺少操作数”。}怎么处理这情况?如果我只给textbox3价值 – Dillibabu

+0

Dillibabu,请参阅我更新的答案。它正在工作..如果有用,请标记答案 –