2011-07-15 52 views
2

我有具有過濾排我的asp.net頁面內的DevExpress GridView控件。內置功能需要我過濾從第一個字母,而不是中間的字母。的DevExpress GridView的過濾方案

所以「SA」會發現「塞繆爾」,而不是「山姆大叔」。要搜索「山姆大叔」,我需要使用%sa%。我的客戶不希望這樣。

我發現,要求我使用設置-AutoFilterCondition =「包含」在gridview的各個領域的解決方案。我在asp.net程序中有20多個gridview。

有其它方法來設置所有GridView控件的默認一次?

感謝

回答

1

您可以在代碼的pageLoad的事件設置它的背後是這樣的:

[VB.NET] 
Protected Sub Page_Load(sender As Object, e As EventArgs) 
    For Each col As GridViewDataColumn In grid.Columns 
     col.Settings.AutoFilterCondition = AutoFilterCondition.Contains 
    Next 
End Sub 
+0

這是對大電網的改善,但如果我理解正確的話,他是希望寬做這個網站。所以每個網頁上的每個網格這將是有益的。 – bendemes

+0

好一點,我建議考慮看看柏拉圖的評論下面關於創建一個新的主題。這將爲整個網站輕鬆解決。 – Mehul

+0

我沒有看到柏拉圖的評論?但是當我接近它時,我會主題化。 – bendemes

2

我建議你創建一個基於現有的和變化的新ASP.NET主題這個屬性在一個皮膚文件中。在這種情況下,您會收到所需的結果對整個網站,無需改變甚至一行代碼:)

0

我實現了這一方式如下:

  1. 添加以下的擴展方法,以減少的工作,它返回一個類型的所有控件:

    public static IEnumerable<T> GetAllControlsOfType<T>(this Control parent) where T : Control 
    { 
        var result = new List<T>(); 
        foreach (Control control in parent.Controls) 
        { 
         if (control is T) 
         { 
          result.Add((T)control); 
         } 
         if (control.HasControls()) 
         { 
          result.AddRange(control.GetAllControlsOfType<T>()); 
         } 
        } 
        return result; 
    } 
    
  2. 以下內容添加到我的BasePage onload事件(從頁面繼承,和我的所有網頁繼承),如果你不使用基頁我推薦它,否則你可以將它添加到每個頁面。

    this.GetAllControlsOfType<ASPxGridView>() 
        .SelectMany(gv => gv.Columns.OfType<GridViewDataTextColumn>()) 
        .ForEach(c => c.Settings.AutoFilterCondition = AutoFilterCondition.Contains);