原創|使用教程|編輯:龔雪|2020-04-01 09:49:54.783|閱讀 507 次
概述: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中,大多數數據感知控件都使用這些組件,但是您也可以將其包含在自己的表單中,并根據需要將其綁定到數據感知控件中。
在v19.1中為FilterCriteriaDisplayStyle設置引入Visual選項,它結合了對Filter Panel和Filter Control的可視化更改,使用涂有皮膚顏色的小塊顯示標準。在構建表達式時,它還使用下拉菜單而不是組合框來選擇條件。
gridView1.OptionsView.FilterCriteriaDisplayStyle = DevExpress.XtraEditors.FilterCriteriaDisplayStyle.Visual;
菜單是完全可定制的,此類定制工作的主要入口點是事件FilterEditorCreated,它提供對FilterEditorControl實例的訪問,而后者又可以處理三個事件。
PopupMenuShowing允許您隱藏、刪除和重命名項目,并更改任何Filter Editor Control菜單圖標,用于此目的的相關菜單具有e.MenuType == FilterControlMenuType.Clause:
gridView1.FilterEditorCreated += OnFilterEditorCreated; private void OnFilterEditorCreated(object sender, DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) { e.FilterEditor.PopupMenuShowing += OnPopupMenuShowing; } private void OnPopupMenuShowing(object sender, DevExpress.XtraEditors.Filtering.PopupMenuShowingEventArgs e) { if (e.MenuType == FilterControlMenuType.Clause) { var node = e.CurrentNode as ClauseNode; // customize function menus for DateTime fields if (node != null && node.Property.Type == typeof(DateTime)) { e.Menu.Hide(ClauseType.Equals); e.Menu.Remove(ClauseType.DoesNotEqual); e.Menu.Hide( DevExpress.XtraEditors.Controls.StringId. FilterAdvancedDateTimeOperatorMenuCaption); var menuItem = e.Menu.Find(ClauseType.Between); menuItem.Caption = "Between A and B"; menuItem.ImageOptions.SvgImage = MySvgImage1; } } }
處理事件InitNode來初始化用戶創建的新FilterEditor節點,例如分配默認功能和運算符。 在下面的示例中,如果用戶為字段ShippingDate創建新條件,則將首先選擇函數IsWeekend,該功能包含也被配置為所有字符串字段的默認值。
gridView1.FilterEditorCreated += OnFilterEditorCreated; private void OnFilterEditorCreated(object sender, DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) { e.FilterEditor.InitNode += OnInitNode; } private void OnInitNode(object sender, InitNodeEventArgs e) { if (e.IsNewNode) { e.PropertyName = "ShippingDate"; e.SetOperation("IsWeekend"); } else if (e.PropertyType == typeof(string)) e.SetOperation(FunctionOperatorType.Contains); }
為BeforeShowValueEditor實現一個處理程序,來自定義Filter Editor Controls中使用的值編輯器。例如,大多數DateTime函數使用日期操作數并使用Calendar編輯器。但是,自定義函數InsideDaysOfToday(以上)接受天數的整數值,下面的代碼將默認的Calendar編輯器更改為SpinEdit控件。
gridView1.FilterEditorCreated += OnFilterEditorCreated; private void OnFilterEditorCreated(object sender, DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) { e.FilterEditor.BeforeShowValueEditor += OnBeforeShowValueEditor; } private void OnBeforeShowValueEditor(object sender, ShowValueEditorEventArgs e) { var node = e.CurrentNode as ClauseNodeEx; if(node != null && node.Property.Type == typeof(DateTime) && Equals(node.FunctionType, WithinDaysOfTodayFunction.FunctionName)) e.CustomRepositoryItem = spinEdit; }
DevExpress技術交流群:540330292 歡迎一起進群討論
掃描關注DevExpress中文網微信公眾號,及時獲取最新動態及最新資訊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網