DevExpress Reporting是.NET Framework下功能完善的報表平臺,它附帶了易於使用的Visual Studio報表設計器和豐富的報表控件集,包括數據透視表、圖表,因此您可以構建無與倫比、信息清晰的報表。
下一個主要更新(v24.1)將於6月初發布,這篇文章詳細介紹了預計在6月份發佈的DevExpress Reports的一些新功能,並描述了早期預覽版(EAP)中包含的內容。
原生Angular報表查看器——工具欄自定義API和OnPush更改檢測策略支持
請注意,下面描述的更改已經在當前主要版本DevExpress v23.2.5的最新更新中可用。
在v24.1中,新的Angular報表查看器將讓用戶能夠自定義工具欄,下面的代碼片段演示瞭如何使用CustomizeMenuActions事件處理程序隱藏工具欄項:
CustomizeMenuActions(event) { var actionSearch = event.args.GetById(ActionId.Search); if (actionSearch) actionSearch.visible = false; var highlightEditingFieldsAction = e.GetById(DevExpress.Reporting.Viewer.ActionId.HighlightEditingFields); if (highlightEditingFieldsAction) highlightEditingFieldsAction.visible = false; }
下面的代碼片段使用相同的事件處理程序向工具欄添加一個自定義導出選項:
function CustomizeMenuActions(event) { const actionExportTo = event.args.GetById(ActionId.ExportTo); const newFormat = { format: 'NewFormat', text: 'New Format' }; if (actionExportTo) { actionExportTo.events.on('propertyChanged', (args) => { const formats = actionExportTo.items[0].items; if (args.propertyName === 'items' && formats.indexOf(newFormat) === -1) formats.push(newFormat); }); } }
第二個與Angular相關的增強引入了OnPush變更檢測策略支持,Angular的OnPush變更檢測策略通過減少不必要的渲染週期來提高整體性能,並且只在輸入引用發生變化時觸發變更檢測。在v24.1中,你可以通過在@Component裝飾器中添加changeDetection屬性,將默認檢測策略改爲ChangeDetectionStrategy.OnPush,如下所示:
import { Component, ViewEncapsulation } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; import { DxReportViewerModule } from 'devexpress-reporting-angular'; @Component({ selector: 'app-root', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [ CommonModule, RouterOutlet, DxReportViewerModule) ], templateUrl: './app.component.html', styleUrls: [...] }) export class AppComponent { title = 'DXReportViewerSample'; reportUrl: string = 'TestReport'; hostUrl: string = 'https://localhost:5001/'; invokeAction: string = '/DXXRDV'; }
Microsoft Azure和Amazon Web Services App部署教程
官方技術團隊已經爲那些希望在微軟Azure和AWS上部署由DevExpress Reports驅動的web應用程序的用戶創建併發布了一組幫助主題,包含:
Microsoft Azure
- 部署一個ASP.NET Core報表應用程序通過Visual Studio移植到Azure應用程序服務(Linux)
- 部署一個docker化的ASP.NET Core報表應用程序通過Visual Studio/CLI到Azure應用程序服務(Linux)
- 部署具有報表功能的Azure Functions應用程序(基於linux)
- 使用Azure存儲緩存來存儲報表文檔
Amazon Web Services (AWS)
- 使用AWS Fargate將一個docker化的ASP. NET Core報表應用程序(基於linux)部署到AWS彈性容器服務
- 使用Lambda註解框架部署一個具有報表功能的AWS Lambda函數應用
- 創建和部署具有向AWS Lambda報告功能的REST API應用程序
現代Web平臺(ASP. NET Core, Blazor, Angular)的新的獨立參數面板組件
v24.1將包括一個新的獨立報表參數面板組件,該組件的目的是根據後端提供的報表實例自動爲報表參數編輯器生成佈局(包括分組)。
對於那些必須以編程方式創建報表,然後將其導出或通過郵件發送,而不向最終用戶顯示其打印預覽的人員,此組件將特別有用。使用此組件將有助於減少內存佔用,因爲它消除了在後臺生成報表圖像並將其發送到客戶端應用程序的需要。
我們的實現是基於DevExpress報表查看器組件的參數面板,它提供了對幾乎相同的組件公共屬性和事件集的訪問(與報表參數相關)。下面是Angular平臺上的一個組件定義示例:
<dx-report-parameters-panel class="parametersPanel" [reportUrl]="yourReportName" height="560px" width="400px"> <dxrpp-request-options [invokeAction]="invokeAction" host="http://yourhostname:port/"></dxrpp-request-options> <dxrpp-callbacks (BeforeRender)="onBeforeRender($event)"></dxrpp-callbacks> </dx-report-parameters-panel>
該面板允許您創建自定義提交按鈕並處理相關的單擊事件,您可以序列化輸入參數值,將它們發送到後端應用程序,然後在打印或導出操作之前將它們應用到XtraReport類的實例中:
下面的代碼片段演示瞭如何將參數值應用到後端:
public async Task <IActionResult> ExportWithParameters( [FromServices] IReportParametersSerializer reportParametersSerializer, [FromForm] string serializedParameters, [FromForm] string reportUrl) { var report = await reportParametersSerializer.ApplyParametersStateAsync(reportUrl, serializedParameters); report.ExportToPdf("yourFilePath"); return Ok(new { Message = "A report has been successfully exported" }); }
基於Skia的圖形引擎(非windows環境)性能增強
v24.1重構了跨平臺繪圖引擎、添加了字體緩存、優化了動態內存分配。內部測試表明,在生成1500頁的報告時,有了顯著的改進:
- 創建1500頁報告所需的時間減少了大約20%(9秒 vs 11秒)。
- 將1500頁的報告導出爲PDF所需的時間減少了大約16%(7.25秒 vs 8.7秒)。
- 將1500頁的報告導出爲圖像所需的時間減少了大約10%(5.2秒 vs 5.7秒)。
總體CPU使用率也降低了大約8-10%。
注意:在生成大型報告文檔時,性能優勢將最爲明顯。