• <menu id="w2i4a"></menu>
  • logo DevExpress WinForms使用教程

    文檔首頁(yè)>>DevExpress WinForms使用教程>>DevExpress Winforms使用技巧教程:掌握Filter Editor(三)

    DevExpress Winforms使用技巧教程:掌握Filter Editor(三)


    下載DevExpress v19.2完整版    DevExpress v19.2漢化資源獲取

    DevExpress Winforms Controls 內(nèi)置140多個(gè)UI控件和庫(kù),完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序。想要體驗(yàn)?點(diǎn)擊下載>>

    DevExpress WinForms安裝附帶兩個(gè)允許最終用戶(hù)構(gòu)建過(guò)濾器查詢(xún)的控件:提供GUI的Filter控件和將Filter控件與基于文本輸入的面板組合在一起的Filter Editor控件。WinForms中,大多數(shù)數(shù)據(jù)感知控件都使用這些組件,但是您也可以將其包含在自己的表單中,并根據(jù)需要將其綁定到數(shù)據(jù)感知控件中。

    自定義

    在v19.1中為FilterCriteriaDisplayStyle設(shè)置引入Visual選項(xiàng),它結(jié)合了對(duì)Filter Panel和Filter Control的可視化更改,使用涂有皮膚顏色的小塊顯示標(biāo)準(zhǔn)。在構(gòu)建表達(dá)式時(shí),它還使用下拉菜單而不是組合框來(lái)選擇條件。

    gridView1.OptionsView.FilterCriteriaDisplayStyle =
    DevExpress.XtraEditors.FilterCriteriaDisplayStyle.Visual;

    DevExpress Winforms使用技巧教程

    菜單是完全可定制的,此類(lèi)定制工作的主要入口點(diǎn)是事件FilterEditorCreated,它提供對(duì)FilterEditorControl實(shí)例的訪問(wèn),而后者又可以處理三個(gè)事件。

    PopupMenuShowing允許您隱藏、刪除和重命名項(xiàng)目,并更改任何Filter Editor Control菜單圖標(biāo),用于此目的的相關(guān)菜單具有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;
    }
    }
    }

    DevExpress Winforms使用技巧教程

    處理事件InitNode來(lái)初始化用戶(hù)創(chuàng)建的新FilterEditor節(jié)點(diǎn),例如分配默認(rèn)功能和運(yùn)算符。 在下面的示例中,如果用戶(hù)為字段ShippingDate創(chuàng)建新條件,則將首先選擇函數(shù)IsWeekend,該功能包含也被配置為所有字符串字段的默認(rèn)值。

    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實(shí)現(xiàn)一個(gè)處理程序,來(lái)自定義Filter Editor Controls中使用的值編輯器。例如,大多數(shù)DateTime函數(shù)使用日期操作數(shù)并使用Calendar編輯器。但是,自定義函數(shù)InsideDaysOfToday(以上)接受天數(shù)的整數(shù)值,下面的代碼將默認(rèn)的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 Winforms使用技巧教程

    更多產(chǎn)品使用教程,盡在DevExpress中文網(wǎng)哦~

    DevExpress技術(shù)交流群:540330292      歡迎一起進(jìn)群討論

    掃描關(guān)注DevExpress中文網(wǎng)微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊

    DevExpress中文網(wǎng)微信
    掃碼咨詢(xún)


    添加微信 立即咨詢(xún)

    電話(huà)咨詢(xún)

    客服熱線(xiàn)
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();