发布时间 : 2019-10-31 15:28:27.950|阅读 231 次
概述:本示例说明如何使用Business Objects集合创建报表。Business Objects是一种对象类数据,可使用其以不同的结构表示数据:表、列表、数组等。此示例使用Business Objects的两种变体——IEnumerable和ITypedList。
相关链接:
立即点击下载Stimulsoft Reports.Net最新版
本示例说明如何使用Business Objects集合创建报表。Business Objects是一种对象类数据,可使用其以不同的结构表示数据:表、列表、数组等。此示例使用Business Objects的两种变体——IEnumerable和ITypedList。
例如,创建两个不同的视图-ViewIEnumerable和ViewITypedList。每个视图都有自己的GetReport操作处理程序。您还需要定义ViewerEvent操作。
@using Stimulsoft.Report.Mvc; ... @Html.Stimulsoft().StiMvcViewer(new StiMvcViewerOptions() { Actions = { GetReport = "GetReportIEnumerable", ViewerEvent = "ViewerEvent" } }) ... @Html.Stimulsoft().StiMvcViewer(new StiMvcViewerOptions() { Actions = { GetReport = "GetReportITypedList", ViewerEvent = "ViewerEvent" } })
另外,我们需要在控制器中添加这些操作。GetReportIEnumerable操作将加载IEnumerable报表并为其注册数据。以类似的方式,GetReportITypedList操作将加载ITypedList报表并为其注册数据。
在将结果传输到查看器的客户端之前,请调用CheckReference()特殊方法。该方法在报表ReferenceAssemblies集合中添加了对当前项目的程序集的引用,有必要访问在此应用程序中编译的业务对象。可选地,业务对象可以从另一个程序集中获取。
public ActionResult GetReportIEnumerable() { StiReport report = new StiReport(); report.Load(Server.MapPath("~/Content/Reports/BusinessObjects_IEnumerable.mrt")); report.RegData("EmployeeIEnumerable", CreateBusinessObjectsIEnumerable.GetEmployees()); CheckReference(report); return StiMvcViewer.GetReportResult(report); } public ActionResult GetReportITypedList() { StiReport report = new StiReport(); report.Load(Server.MapPath("~/Content/Reports/BusinessObjects_ITypedList.mrt")); report.RegData("EmployeeITypedList", CreateBusinessObjectsITypedList.GetEmployees()); CheckReference(report); return StiMvcViewer.GetReportResult(report); } private void CheckReference(StiReport report) { string assemblyName = Assembly.GetExecutingAssembly().ManifestModule.Name; List<string> refs = new List<string>(report.ReferencedAssemblies); if (!refs.Contains(assemblyName)) { refs.Add(assemblyName); report.ReferencedAssemblies = refs.ToArray(); } }
ViewerEvent操作处理所有查看器事件(切换页面、缩放、打印、导出、交互等),并使用ViewerEventResult()静态方法将答案返回给客户端。
public ActionResult ViewerEvent() { return StiMvcViewer.ViewerEventResult(); }
在下面的屏幕截图中,您可以看到示例代码的结果。