簡體   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