2011-11-13 43 views
0

我有一個帶有EntityDataSource的GridView。ASP.NET 4使用QueryExtender的多個字符串的GridView過濾器

我想在運行時使用QueryExtender過濾行,方法是將它與多個字符串進行比較。

即,只返回行,其中某一個領域是IN(「字符串1」,「字符串2」,STRING3' )

有人能指出我朝着一個答案?謝謝。

編輯:我已經知道如何做一個字符串,在運行時從控件讀取。但我無法在Google上找到任何證明我正在努力實現的內容。

回答

0

有一個Enumerable<T>可以定義一個包含List<string>您正在尋找的字符串列表,然後寫類似:

List<string> search = new List<string>(); 
      search.Add("string 1"); 
      search.Add("string 2"); 

      var query = from ex in YourEntities 
        where search.Contains(ex.Field) 
       select ex; 

query將有您正在尋找的項目。

UPDATE

我不熟悉的QueryExtender控件但this MSDN教程建議您做到以下幾點:

添加QueryExtender控件的開始和結束標記之間的CustomExpressionFilter:

<asp:CustomExpression OnQuerying="FilterByStrings"></asp:CustomExpression> 

然後在你的代碼中定義這樣的方法:

protected void FilterByStrings(object sender, CustomExpressionEventArgs e) 
{ 
    List<string> search = new List<string>(); 
       search.Add("string 1"); 
       search.Add("string 2"); 

    e.Query = from ex in e.Query.Cast<YourEntity>() 
       where search.Contains(ex.Field) 
       select ex; 
} 
+0

謝謝你的迴應。 我應該提到,我目前正在從隱藏字段值中讀取它。 現在,我有: 的 我不介意從列表中而不是控制讀數。但是,我將如何包含該列表的值。 。 道歉,如果這是:-( –

+0

@colonel_px一個非常基本的問題:我發佈了一個更新我希望這是有幫助的,我以前從未使用過的的QueryExtender – Icarus

+0

謝謝,伊卡洛斯 我只是想出來的東西。這樣,用一種方法表達。 會更新一次,我發現它是否有效! –