原創|使用教程|編輯:龔雪|2020-03-24 10:02:04.130|閱讀 566 次
概述:DevExpress WinForms安裝附帶兩個允許最終用戶構建過濾器查詢的控件:提供GUI的Filter控件和將Filter控件與基于文本輸入的面板組合在一起的Filter Editor控件。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
下載DevExpress v19.2完整版 DevExpress v19.2漢化資源獲取
DevExpress Winforms Controls 內置140多個UI控件和庫,完美構建流暢、美觀且易于使用的應用程序。想要體驗?點擊下載>>
DevExpress WinForms安裝附帶兩個允許最終用戶構建過濾器查詢的控件:提供GUI的Filter控件和將Filter控件與基于文本輸入的面板組合在一起的Filter Editor控件。WinForms中,大多數數據感知控件都使用這些組件,但是您也可以將其包含在自己的表單中,并根據需要將其綁定到數據感知控件中。
自定義函數準備就緒后,您需要對其進行注冊,即將其添加到Filter控件和Filter Editor控件支持的函數列表中。如果您在自定義函數類中包括了可選的Register和Unregister方法,則注冊代碼很短:
//Program.cs file namespace DXSample { static class Program { [STAThread] static void Main() { IsWeekendFunction.Register(); WithinDaysOfTodayFunction.Register(); NotBeginsWithFunction.Register(); // ... Application.Run(new Main()); } } }
從技術上講,您的函數現在可用。如果您在Filter Editor控件的文本面板中手動編輯表達式,并使用這些自定義函數中的任何一個,則將生成有效的過濾條件。 但是到目前為止,這些函數將不會包含在可視化面板中。
根據您的要求,使用以下三種技術之一將自定義函數添加到GUI。
一種特定的控件
若要使一個函數僅可用于一個特定的數據感知控件及其嵌入式Filter Editor控件,請為該控件的QueryCustomFunctions事件實現一個處理程序。使用以下代碼,可以在嵌入式Filter Editor和Excel-style過濾器菜單中為數據網格使用IsWeekendFunction,而僅在過濾器編輯器中可見“ InsideDaysOfToday”函數。
gridView1.QueryCustomFunctions += OnQueryCustomFunctions; private void OnQueryCustomFunctions(object sender, DevExpress.XtraGrid.Views.Grid.CustomFunctionEventArgs e) { if(e.PropertyType == typeof(DateTime)) { e.Add(IsWeekendFunction.FunctionName); if(e.IsFilterEditor) e.Add(WithinDaysOfTodayFunction.FunctionName); } }
所有Filter和Filter Editor控件
若要注冊全局自定義函數來包含在所有Filter和Filter Editor控件中,請將它們添加到事件CriteriaOperator.QueryCustomFunctions的處理程序中。 此示例中全局注冊了NotBeginsWith函數:
static class Program { [STAThread] static void Main() { // ... CriteriaOperator.QueryCustomFunctions += OnQueryCustomUIFunctions; // ... } private static void OnQueryCustomUIFunctions(object sender, DevExpress.Data.Filtering.CustomFunctionEventArgs e) { if(e.PropertyType == typeof(string)) { e.Add(NotBeginsWithFunction.FunctionName); } } }
特定于個別屬性
若要注冊所有Filter和Filter Editor控件都應該可用但特定于數據類型屬性的函數,請使用屬性DevExpress.Data.Filtering.CustomFunction注釋屬性。 在此示例中,數據網格顯示具有兩個字符串屬性Text和Info的類型,自定義函數NotBeginsWith僅適用于Info字段。
[CustomFunction(NotBeginsWithFunction.FunctionName /*, Image = <image>*/)] public string Info { get { return info; } set { if (info != value) { info = value; OnPropertyChanged(); } } }
DevExpress技術交流群:540330292 歡迎一起進群討論
掃描關注DevExpress中文網微信公眾號,及時獲取最新動態及最新資訊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網