翻譯|使用教程|編輯:龔雪|2022-10-27 14:35:06.797|閱讀 259 次
概述:本文為大家介紹如何使用界面控件DevExpress WPF創(chuàng)建類似Excel的過濾,歡迎下載產(chǎn)品最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
DevExpress WPF擁有120+個控件和庫,將幫助您交付滿足甚至超出企業(yè)需求的高性能業(yè)務(wù)應(yīng)用程序。通過DevExpress WPF能創(chuàng)建有著強(qiáng)大互動功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來新一代支持觸摸的解決方案。
DevExpress WPF在v19.2版本中添加了新的excel樣式下拉過濾器,旨在簡化使用,并為最終用戶提供各種數(shù)據(jù)分析增強(qiáng)功能,這個下拉過濾器還被設(shè)計為為開發(fā)人員擴(kuò)展定制功能。
在v19.2及之后的版本中,這個下拉過濾器默認(rèn)在以下幾個控件中使用:
接下來我們將詳細(xì)介紹Excel樣式下拉過濾器的功能。
在應(yīng)用篩選器時,您可能希望知道有多少條記錄與給定篩選器值匹配,Excel-Style Drop-Down Filter在過濾器值旁邊顯示一個記錄計數(shù)。
Excel-Style Drop-Down Filter允許您在其中組合不同的日期間隔。
您可以在xcel-Style Drop-Down Filter中應(yīng)用以下數(shù)字過濾器:
這些篩選器允許分析數(shù)據(jù)網(wǎng)格中的信息,而無需構(gòu)造復(fù)雜的篩選條件。
Data Grid和TreeList允許您指定條件格式規(guī)則并給予這些規(guī)則應(yīng)用過濾器。
在Data Grid和TreeList中,可以對來自兩個或多個列的篩選值進(jìn)行分組,并將結(jié)果顯示為一個分層檢查列表,這個功能允許用戶根據(jù)多個列篩選數(shù)據(jù)。
要合并此功能,請將ColumnBase.FilterPopupGroupFields屬性設(shè)置為針對篩選器值進(jìn)行分組的字段的名稱,名稱之間用逗號、分號或空格隔開,字段名的順序決定了組內(nèi)的層次結(jié)構(gòu)。
<dxg:GridControl> <dxg:GridControl.Columns> <dxg:GridColumn FieldName="ID" /> <dxg:GridColumn FieldName="Trademark" /> <dxg:GridColumn FieldName="Model" FilterPopupGroupFields="Trademark;Model" /> </dxg:GridControl.Columns> ... </dxg:GridControl>
Excel-style Drop-Down Filter允許您附帶預(yù)定義的過濾器,預(yù)定義過濾器顯示在Filter Rules選項卡中。
Data Grid和TreeList允許您使用 屬性指定這樣的過濾器。
<dxg:GridColumn FieldName="UnitPrice"> <dxg:GridColumn.PredefinedFilters> <dxfui:PredefinedFilterCollection> <dxfui:PredefinedFilter Name="Less than 10" Filter="?p ≤ 10" /> <dxfui:PredefinedFilter Name="Between 10 and 50" Filter="?p > 10 and ?p ≤ 50" /> <dxfui:PredefinedFilter Name="Between 50 and 100" Filter="?p > 50 and ?p ≤ 100" /> <dxfui:PredefinedFilter Name="Greater than 100" Filter="?p > 100" /> </dxfui:PredefinedFilterCollection> </dxg:GridColumn.PredefinedFilters> </dxg:GridColumn>
使用 屬性來指定一個自定義數(shù)據(jù)模板,在這個模板中,定義一個篩選器元素并指定其設(shè)置。
自定義過濾器彈出內(nèi)容
<dxg:GridControl x:Name="grid" ItemsSource="..."> <dxg:GridControl.Columns> ... <dxg:GridColumn FieldName="Quantity"> <dxg:GridColumn.CustomColumnFilterPopupTemplate> <DataTemplate> <dxfui:RangeFilterElement x:Name="PART_FilterElement"/> </DataTemplate> </dxg:GridColumn.CustomColumnFilterPopupTemplate> </dxg:GridColumn> ... </dxg:GridControl.Columns> </dxg:GridControl>
自定義運算符列表
<dxg:GridColumn FieldName="OrderDate"> <dxg:GridColumn.CustomColumnFilterPopupTemplate> <DataTemplate> <dxfui:ExcelStyleFilterElement x:Name="PART_FilterElement" QueryOperators="OnExcelStyleFilterQueryOperators"/> </DataTemplate> </dxg:GridColumn.CustomColumnFilterPopupTemplate> </dxg:GridColumn>
void OnExcelStyleFilterQueryOperators(object sender, ExcelStyleFilterElementQueryOperatorsEventArgs e) { if(e.FieldName == "OrderDate") { e.Operators.Clear(); e.Operators.Add(new ExcelStyleFilterElementOperatorItem( ExcelStyleFilterElementOperatorType.Equal)); e.Operators.Add(new ExcelStyleFilterElementOperatorItem( ExcelStyleFilterElementOperatorType.NotEqual)); } }
創(chuàng)建自定義運算符
<dxg:GridColumn FieldName="OrderDate"> <dxg:GridColumn.CustomColumnFilterPopupTemplate> <DataTemplate> <dxfui:ExcelStyleFilterElement x:Name="PART_FilterElement" QueryOperators="OnExcelStyleFilterQueryOperators"/> </DataTemplate> </dxg:GridColumn.CustomColumnFilterPopupTemplate> </dxg:GridColumn>
const string CustomFunctionName = "LastYears"; var currentYear = DateTime.Now.Year; ICustomFunctionOperatorBrowsable customFunction = CustomFunctionFactory.Create( CustomFunctionName, (DateTime date, int threshold) => { return currentYear >= date.Year && currentYear - date.Year <= threshold; } ); void OnExcelStyleFilterQueryOperators(object sender, ExcelStyleFilterElementQueryOperatorsEventArgs e) { if(e.FieldName == "OrderDate") { // ... var customFunctionEditSettings = new BaseEditSettings[] { new TextEditSettings { MaskType = MaskType.Numeric, Mask = "D", MaskUseAsDisplayFormat = true } }; e.Operators.Add(new ExcelStyleFilterElementOperatorItem(CustomFunctionName, customFunctionEditSettings) { Caption = "Last Years" }); } }
自定義操作數(shù)模板
UserControl.Resources> <DataTemplate x:Key="ternaryTemplate"> <dxe:TrackBarEdit Minimum="0" Maximum="300" MinWidth="120" TickPlacement="None"> <dxe:TrackBarEdit.EditValue> <MultiBinding Converter="{local:TrackBarEditRangeConverter}"> <Binding Path="LeftValueItem.Value"/> <Binding Path="RightValueItem.Value"/> </MultiBinding> </dxe:TrackBarEdit.EditValue> <dxe:TrackBarEdit.StyleSettings> <dxe:TrackBarRangeStyleSettings /> </dxe:TrackBarEdit.StyleSettings> </dxe:TrackBarEdit> </DataTemplate> </UserControl.Resources> ... <dxg:GridColumn FieldName="Quantity"> <dxg:GridColumn.CustomColumnFilterPopupTemplate> <DataTemplate> <dxfui:ExcelStyleFilterElement x:Name="PART_FilterElement" QueryOperators="OnExcelStyleFilterQueryOperators"/> </DataTemplate> </dxg:GridColumn.CustomColumnFilterPopupTemplate> </dxg:GridColumn> void OnExcelStyleFilterQueryOperators(object sender, ExcelStyleFilterElementQueryOperatorsEventArgs e) { if(e.FieldName == "Quantity") { var template = (DataTemplate)FindResource("ternaryTemplate"); e.Operators[ExcelStyleFilterElementOperatorType.Between].OperandTemplate = template; e.Operators[ExcelStyleFilterElementOperatorType.NotBetween].OperandTemplate = template; } }
DevExpress技術(shù)交流群6:600715373 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)