翻譯|行業(yè)資訊|編輯:龔雪|2023-02-20 10:45:56.620|閱讀 169 次
概述:本文將介紹DevExpress WPF的Pivot Grid組件在近幾個(gè)更新周期中增強(qiáng)的功能,歡迎下載相關(guān)組件體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
界面控件DevExpress WPF的Pivot Grid組件是一個(gè)類(lèi)似excel的數(shù)據(jù)透視表,用于多維數(shù)據(jù)分析和跨選項(xiàng)卡報(bào)表生成。它擁有眾多的布局自定義選項(xiàng),允許開(kāi)發(fā)者完全控制其UI且以用戶(hù)為中心的功能使其易于部署。
PS:DevExpress WPF擁有120+個(gè)控件和庫(kù),將幫助您交付滿(mǎn)足甚至超出企業(yè)需求的高性能業(yè)務(wù)應(yīng)用程序。通過(guò)DevExpress WPF能創(chuàng)建有著強(qiáng)大互動(dòng)功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶(hù)的需求和構(gòu)建未來(lái)新一代支持觸摸的解決方案。
在本文中,將總結(jié)在DevExpress過(guò)去發(fā)布的幾個(gè)周期中引入的與Pivot Grid相關(guān)的增強(qiáng)功能。
DevExpress技術(shù)交流群7:674691612 歡迎一起進(jìn)群討論
官方技術(shù)團(tuán)隊(duì)首要目標(biāo)是交付單一/統(tǒng)一的綁定機(jī)制,并簡(jiǎn)化整個(gè)Pivot Grid設(shè)置。
Pivot Grid字段在以下模式下使用新的統(tǒng)一綁定機(jī)制:
更新的API是建立在迄今為止最快的引擎上的(稱(chēng)之為優(yōu)化計(jì)算引擎),因此統(tǒng)一的API允許開(kāi)發(fā)者將Pivot Grid綁定到服務(wù)器模式/OLAP數(shù)據(jù)源或內(nèi)存中數(shù)據(jù)源(新內(nèi)存中引擎比舊的Legacy和LegacyOptimized引擎快得多)。
介紹完這些之后,現(xiàn)在一起看看每種可用的數(shù)據(jù)綁定類(lèi)型……
使用DataSourceColumnBinding類(lèi)將Pivot Grid字段綁定到數(shù)據(jù)源中的列或OLAP多維數(shù)據(jù)集中的度量/維度,在以前的版本中,開(kāi)發(fā)者必須指定PivotGridFieldBase.FieldName屬性來(lái)將PivotGrid字段綁定到數(shù)據(jù)源中的列。
PivotGridField statusField = new PivotGridField() { FieldName = "[Measures].[Internet Revenue Status]", Area = PivotArea.DataArea, AreaIndex = 2, Caption = "Status", Name = "fieldStatus" }; PivotGridField quarterField = new PivotGridField() { FieldName = "[Date].[Fiscal].[Fiscal Quarter]", Area = PivotArea.RowArea, AreaIndex = 2, Caption = "Fiscal Quarter", Name = "pivotGridField" }; pivotGridControl.Fields.AddRange(new[] { quarterField, statusField });
開(kāi)發(fā)者現(xiàn)在可以使用PivotGridField.DataBinding屬性,它能夠接收這種類(lèi)型的實(shí)例,以及稍后將描述的其他實(shí)例。
PivotGridField statusField = new PivotGridField() { DataBinding = new DataSourceColumnBinding("[Measures].[Internet Revenue Status]"), Area = PivotArea.DataArea, AreaIndex = 2, Caption = "Status", Name = "fieldStatus" }; PivotGridField quarterField = new PivotGridField() { DataBinding = new DataSourceColumnBinding("[Date].[Fiscal].[Fiscal Quarter]"), Area = PivotArea.RowArea, AreaIndex = 2, Caption = "Fiscal Quarter", Name = "pivotGridField" }; pivotGridControl.Fields.AddRange(new[] { quarterField, statusField });
ExpressionDataBinding和OlapExpressionBinding允許將Pivot Grid字段分別綁定到計(jì)算表達(dá)式或MDX表達(dá)式(OLAP),此外ExpressionDataBinding可以用來(lái)實(shí)現(xiàn)以下Pivot Grid特性:
例如,以下來(lái)自字母分組示例應(yīng)用程序的代碼片段將ProductName字段值分組為三個(gè)范圍:A-E, F-S和T-Z(基于產(chǎn)品名稱(chēng)的初始字符)。
// Create fieldProductName and bind it to the ProductName column in the data source. PivotGridField fieldProductName = new PivotGridField(); fieldProductName.Area = PivotArea.RowArea; fieldProductName.Caption = "Product"; fieldProductName.DataBinding = new DataSourceColumnBinding("ProductName"); fieldProductName.Name = "fieldProductName"; pivotGridControl.Fields.Add("ProductName"); // Create fieldProductGroup, specify the expression, and bind it to the created field. PivotGridField fieldProductGroup = new PivotGridField(); fieldProductGroup.Area = PivotArea.RowArea; fieldProductGroup.Caption = "Product Group"; fieldProductGroup.AreaIndex = 0; fieldProductGroup.DataBinding = new ExpressionDataBinding( "iif(Substring([ProductName], 0, 1) < 'F', 'A-E', Substring([ProductName], 0, 1) < 'T', 'F-S', 'T-Z')"); pivotGridControl.Fields.Add(fieldProductGroup);
這里的好處是,開(kāi)發(fā)者不需要像在以前的版本中那樣處理CustomGroupInterval事件:
pivotGridControl.CustomGroupInterval += (s, e) => { if(!object.Equals(e.Field, fieldProductGroup)) return; if(Convert.ToChar(e.Value.ToString()[0]) < 'F') { e.GroupValue = "A-E"; return; } if(Convert.ToChar(e.Value.ToString()[0]) > 'E' &x;&x; Convert.ToChar(e.Value.ToString()[0]) < 'T') { e.GroupValue = "F-S"; return; } if(Convert.ToChar(e.Value.ToString()[0]) > 'S') e.GroupValue = "T-Z"; }; pivotGridControl.RefreshData();
注意:如果您使用更新的綁定API,以前涉及以下事件的分組\排序\匯總方法將不再支持:
Binding API使用表達(dá)式進(jìn)行自定義分組。開(kāi)發(fā)者還可以計(jì)算自定義摘要,或?qū)?shù)據(jù)進(jìn)行排序。
最新的版本中添加了更多的表達(dá)式函數(shù)來(lái)擴(kuò)展支持使用場(chǎng)景的范圍:
新版本還添加了在Expression Editor中創(chuàng)建和注冊(cè)自定義聚合函數(shù)的功能,注冊(cè)的函數(shù)可以與預(yù)定義的Pivot Grid方法一起使用。
Pivot Grid現(xiàn)在支持OLAP ADOMD.NET NuGet包用于.NET Framework和.NET. With ADOMD.NET,開(kāi)發(fā)者可以讀取多維模式(超過(guò)兩個(gè)軸),在多維數(shù)據(jù)集上發(fā)起查詢(xún),并根據(jù)需要檢索結(jié)果。
更新的版本增強(qiáng)了Pivot Grid的異步模式,使其更加可用和穩(wěn)定。
下面的代碼片段來(lái)自OLAP Drill Down 技術(shù)演示,為選定的Pivot Grid單元格創(chuàng)建了一個(gè)下鉆數(shù)據(jù)源,并以異步模式在DrillDownForm對(duì)話(huà)框中顯示結(jié)果數(shù)據(jù)源。
pivotGridControl.CellDoubleClick += async (s, e) => { try { pivotGridControl.LoadingPanelVisible = true; PivotDrillDownDataSource ds = await e.CreateDrillDownDataSourceAsync(); pivotGridControl.LoadingPanelVisible = false; using(DrillDownForm form = new DrillDownForm(ds)) form.ShowDialog(); } catch(Exception ex) { pivotGridControl.LoadingPanelVisible = false; XtraMessageBox.Show(ex.Message); } };
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)