[英]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.