商信互联
本示例演示如何访问用于在ASP.NET XAF应用程序中显示报告的ASPxDocumentViewer和ASPxWebDocumentViewer控件。
在本主题中,假定您有一个使用Reports V2 Module的XAF应用程序,并且已经创建了一个或多个报告(请参阅Reports V2 Module Overview)。
当用户在ASP.NET XAF应用程序中预览报表时,将在弹出窗口或主窗口中显示“详细信息视图”(取决于ReportsAspNetModuleV2.DesignAndPreviewDisplayMode值)。此详细信息视图包含一个视图项,该视图项创建了一个用于显示报告的Web控件。特定的视图项和控件类型取决于ReportsAspNetModuleV2.ReportViewerType属性值(HTML5或ASP)。
ReportViewerType值 | 查看项目类型 | 控制类型 |
---|---|---|
HTML5 | ReportWebViewerDetailItem | ASPxWebDocumentViewer |
均价 | ReportViewerDetailItem | ASPxDocumentViewer |
要访问该视图项,请实现一个针对ReportViewer_DetailView_V2详细视图的控制器(此详细视图标识符是通过ReportsAspNetModuleV2.ReportViewDetailViewWebName常量指定的)。将View Item类型作为CompositeView.GetItems <T>方法的通用参数传递。返回列表的第一个元素将是必需的View Item,因为View中只有一个报表查看器项目。然后,您可以处理View Item的ViewItem.ControlCreated事件,并使用ReportViewer属性访问ASPxDocumentViewer或ASPxWebDocumentViewer控件。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.ReportsV2.Web;
// ...
public class CustomizeReportViewerController : ViewController<DetailView> {
public CustomizeReportViewerController() {
TargetViewId = ReportsAspNetModuleV2.ReportViewDetailViewWebName;
}
protected override void OnActivated() {
base.OnActivated();
ReportWebViewerDetailItem reportViewItem =
((DetailView)View).GetItems<ReportWebViewerDetailItem>()[0] as ReportWebViewerDetailItem;
reportViewItem.ControlCreated = delegate(object sender, EventArgs e) {
// Access client-side events of the ASPxWebDocumentViewer control
reportViewItem.ReportViewer.ClientSideEvents.Init =
"function(s, e) { s.previewModel.reportPreview.zoom(0.7); }";
};
}
}
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.ReportsV2.Web
' ...
Public Class CustomizeReportViewerController
Inherits ViewController(Of DetailView)
Public Sub New()
TargetViewId = ReportsAspNetModuleV2.ReportViewDetailViewWebName
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
Dim reportViewItem As ReportWebViewerDetailItem = _
TryCast(CType(View, DetailView).GetItems(Of ReportWebViewerDetailItem)()(0), ReportWebViewerDetailItem)
AddHandler reportViewItem.ControlCreated, Sub(sender As Object, e As EventArgs) _
reportViewItem.ReportViewer.ClientSideEvents.Init = "function(s, e) { s.previewModel.reportPreview.zoom(0.7); }"
End Sub
End Class
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.ReportsV2.Web;
// ...
public class CustomizeReportViewerController : ViewController<DetailView> {
public CustomizeReportViewerController() {
TargetViewId = ReportsAspNetModuleV2.ReportViewDetailViewWebName;
}
protected override void OnActivated() {
base.OnActivated();
ReportViewerDetailItem reportViewItem =
((DetailView)View).GetItems<ReportViewerDetailItem>()[0] as ReportViewerDetailItem;
reportViewItem.ControlCreated = delegate(object sender, EventArgs e) {
// Access settings of the ASPxDocumentViewer control
reportViewItem.ReportViewer.SettingsReportViewer.PageByPage = false;
};
}
}
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.ReportsV2.Web
' ...
Public Class CustomizeReportViewerController
Inherits ViewController(Of DetailView)
Public Sub New()
TargetViewId = ReportsAspNetModuleV2.ReportViewDetailViewWebName
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
Dim reportViewItem As ReportViewerDetailItem = TryCast(CType(View, DetailView).GetItems(Of ReportViewerDetailItem)()(0), ReportViewerDetailItem)
AddHandler reportViewItem.ControlCreated, Sub(sender As Object, e As EventArgs) reportViewItem.ReportViewer.SettingsReportViewer.PageByPage = False
End Sub
End Class
编译这些示例时,需要引用DevExpress.XtraReports.v 19.2 .Web.dll程序集。