翻譯|行業(yè)資訊|編輯:龔雪|2024-05-13 14:16:13.877|閱讀 99 次
概述:本文將為大家介紹如何使用DevExpress報(bào)表組件v24.1預(yù)覽版中的一些新功能,歡迎下載相關(guān)組件體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
DevExpress Reporting是.NET Framework下功能完善的報(bào)表平臺,它附帶了易于使用的Visual Studio報(bào)表設(shè)計(jì)器和豐富的報(bào)表控件集,包括數(shù)據(jù)透視表、圖表,因此您可以構(gòu)建無與倫比、信息清晰的報(bào)表。
下一個(gè)主要更新(v24.1)將于6月初發(fā)布,這篇文章詳細(xì)介紹了預(yù)計(jì)在6月份發(fā)布的DevExpress Reports的一些新功能,并描述了早期預(yù)覽版(EAP)中包含的內(nèi)容。
DevExpress技術(shù)交流群10:532598169 歡迎一起進(jìn)群討論
請注意,下面描述的更改已經(jīng)在當(dāng)前主要版本DevExpress v23.2.5的最新更新中可用。
在v24.1中,新的Angular報(bào)表查看器將讓用戶能夠自定義工具欄,下面的代碼片段演示了如何使用CustomizeMenuActions事件處理程序隱藏工具欄項(xiàng):
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; }
下面的代碼片段使用相同的事件處理程序向工具欄添加一個(gè)自定義導(dǎo)出選項(xiàng):
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); }); } }
第二個(gè)與Angular相關(guān)的增強(qiáng)引入了OnPush變更檢測策略支持,Angular的OnPush變更檢測策略通過減少不必要的渲染周期來提高整體性能,并且只在輸入引用發(fā)生變化時(shí)觸發(fā)變更檢測。在v24.1中,你可以通過在@Component裝飾器中添加changeDetection屬性,將默認(rèn)檢測策略改為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 = '//localhost:5001/'; invokeAction: string = '/DXXRDV'; }
官方技術(shù)團(tuán)隊(duì)已經(jīng)為那些希望在微軟Azure和AWS上部署由DevExpress Reports驅(qū)動的web應(yīng)用程序的用戶創(chuàng)建并發(fā)布了一組幫助主題,包含:
Microsoft Azure
Amazon Web Services (AWS)
v24.1將包括一個(gè)新的獨(dú)立報(bào)表參數(shù)面板組件,該組件的目的是根據(jù)后端提供的報(bào)表實(shí)例自動為報(bào)表參數(shù)編輯器生成布局(包括分組)。
對于那些必須以編程方式創(chuàng)建報(bào)表,然后將其導(dǎo)出或通過郵件發(fā)送,而不向最終用戶顯示其打印預(yù)覽的人員,此組件將特別有用。使用此組件將有助于減少內(nèi)存占用,因?yàn)樗嗽诤笈_生成報(bào)表圖像并將其發(fā)送到客戶端應(yīng)用程序的需要。
我們的實(shí)現(xiàn)是基于DevExpress報(bào)表查看器組件的參數(shù)面板,它提供了對幾乎相同的組件公共屬性和事件集的訪問(與報(bào)表參數(shù)相關(guān))。下面是Angular平臺上的一個(gè)組件定義示例:
<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>
該面板允許您創(chuàng)建自定義提交按鈕并處理相關(guān)的單擊事件,您可以序列化輸入?yún)?shù)值,將它們發(fā)送到后端應(yīng)用程序,然后在打印或?qū)С霾僮髦皩⑺鼈儜?yīng)用到XtraReport類的實(shí)例中:
下面的代碼片段演示了如何將參數(shù)值應(yīng)用到后端:
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" }); }
v24.1重構(gòu)了跨平臺繪圖引擎、添加了字體緩存、優(yōu)化了動態(tài)內(nèi)存分配。內(nèi)部測試表明,在生成1500頁的報(bào)告時(shí),有了顯著的改進(jìn):
總體CPU使用率也降低了大約8-10%。
注意:在生成大型報(bào)告文檔時(shí),性能優(yōu)勢將最為明顯。
更多DevExpress線上公開課、中文教程資訊請上中文網(wǎng)獲取
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)