[英]How to filter DataView based on multiple inputs
我知道如何根据单个文本框中用户的输入来过滤数据:
FilterDataView.RowFilter = txtFilter.Text;
但是您将如何基于来自多个字段的多个用户输入来过滤数据。 基本上,过滤器将充当“搜索”功能。
定义RowFilter时,可以使用类似light t-sql的方法。
一种想法是:
FilterDataView.RowFilter = "name like '%habjan%' and city like '%new york%'"
在这里您可以找到有关RowFilter语法的好文章: DataView RowFilter语法
对于您需要的内容,您将必须根据输入的字段构建行过滤器。
StringBuilder sb = new StringBuilder();
if (tb1.Text.Length > 0)
{
sb.Append("name like '%" + tb1.Text + "%'");
}
if (tb2.Text.Length > 0)
{
if(sb.Length > 0)
{
sb.Append(" and ");
}
sb.Append("city like '%" + tb2.Text + "%'");
}
//.... and so on...
FilterDataView.RowFilter = sb.ToString();
搜索MSDN(LINQ到数据集) http://msdn.microsoft.com/zh-cn/library/bb669073.aspx
好的,Linq to SQL将成为您的朋友。
您需要学习语法,并且有几种不同的形式,但是您可以通过以下方式重新创建查询:
var x = from T in db.Table
where [usual where stuff goes here];
然后,您可以测试每个文本框并执行以下操作:
if (TextBox1.Text != null) x.Where(w => w.field1 == val1);
不错的是,您可以一次将那些Where子句分层放置。 然后将您的对象绑定到var。
[objectname].Datasource = x;
[objectname].Databind();
那应该解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.