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

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

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


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

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

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

    Registering函數(shù)

    自定義函數(shù)準(zhǔn)備就緒后,您需要對其進(jìn)行注冊,即將其添加到Filter控件和Filter Editor控件支持的函數(shù)列表中。如果您在自定義函數(shù)類中包括了可選的Register和Unregister方法,則注冊代碼很短:

    //Program.cs file
    namespace DXSample {
    static class Program {
    [STAThread]
    static void Main() {
    IsWeekendFunction.Register();
    WithinDaysOfTodayFunction.Register();
    NotBeginsWithFunction.Register();
    
    // ...
    Application.Run(new Main());
    }
    }
    }

    從技術(shù)上講,您的函數(shù)現(xiàn)在可用。如果您在Filter Editor控件的文本面板中手動編輯表達(dá)式,并使用這些自定義函數(shù)中的任何一個,則將生成有效的過濾條件。 但是到目前為止,這些函數(shù)將不會包含在可視化面板中。

    根據(jù)您的要求,使用以下三種技術(shù)之一將自定義函數(shù)添加到GUI。

    一種特定的控件

    若要使一個函數(shù)僅可用于一個特定的數(shù)據(jù)感知控件及其嵌入式Filter Editor控件,請為該控件的QueryCustomFunctions事件實(shí)現(xiàn)一個處理程序。使用以下代碼,可以在嵌入式Filter Editor和Excel-style過濾器菜單中為數(shù)據(jù)網(wǎng)格使用IsWeekendFunction,而僅在過濾器編輯器中可見“ InsideDaysOfToday”函數(shù)。

    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);
    }
    }

    DevExpress Winforms使用技巧教程

    所有Filter和Filter Editor控件

    若要注冊全局自定義函數(shù)來包含在所有Filter和Filter Editor控件中,請將它們添加到事件CriteriaOperator.QueryCustomFunctions的處理程序中。 此示例中全局注冊了NotBeginsWith函數(shù):

    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控件都應(yīng)該可用但特定于數(shù)據(jù)類型屬性的函數(shù),請使用屬性DevExpress.Data.Filtering.CustomFunction注釋屬性。 在此示例中,數(shù)據(jù)網(wǎng)格顯示具有兩個字符串屬性Text和Info的類型,自定義函數(shù)NotBeginsWith僅適用于Info字段。

    [CustomFunction(NotBeginsWithFunction.FunctionName /*, Image = <image>*/)]
    public string Info {
    get { return info; }
    set {
    if (info != value) {
    info = value;
    OnPropertyChanged();
    }
    }
    }

    DevExpress Winforms使用技巧教程

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

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

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

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


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    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); })();