繁体   English   中英

如何基于多个输入过滤DataView

[英]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();

好的,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM