ActiveReports 在 MVC 中运行时绑定数据源

发布时间:2017/06/30 00:06 发布者:lenka.guo

返回博客中心


本文主要讲解的是MVC中为Activereport报表进行绑定数据源。

1、创建工程

在Visual Studio 2015中创建一个 ASP.NET MVC 4 + .NET 4.5 的工程。

2、添加报表

在工程中添加一个 RDL 报表模板,并设置数据源类型为 Object 数据源,然后通过一个表格显示该数据。参考附件中的 CustomDataSource.rdlx 文件。

3、添加服务文件

该步骤是实现运行时绑定数据源的关键,因为ActiveReports 实现所有运行时绑定数据源都是需要实现DocumentLocateDataSource() 接口,所以要添加WebService.asmx文件,在这个里面来实现。

image

 

在工程中添加一个【Web 服务】,修改该类继承的原始类型为 GrapeCity.ActiveReports.Web.ReportService

重写OnCreateReportHandler

   protected override object OnCreateReportHandler(string reportPath)
        {
            var instance = base.OnCreateReportHandler(reportPath);
            var pageReport = instance as PageReport;
            if (pageReport != null)
            {
                pageReport.Document.LocateDataSource += Document_LocateDataSource;
            }
            return instance;
        }

 

4、添加相关文件

从 C:\Users\用户名\Documents\GrapeCity Samples\ActiveReports 10\HTML5 Viewer\HTML5 Viewer 路径中将 css 文件夹下的文件拷贝到 MVC 工程的 Contents 目录下;

将 Scripts 目录下的文件拷贝到MVC工程的Scripts目录下;将fonts文件夹拷贝到MVC工程的根目录下。


 

5、添加页面

在 Index.cshtml 文件中初始化html5viewer

<link href="~/Content/bootstrap.css" rel="stylesheet" />
<link href="~/Content/GrapeCity.ActiveReports.Viewer.Html.css" rel="stylesheet" />
<link href="~/Content/Site.css" rel="stylesheet" />
<link href="~/Content/theme-cosmo.css" rel="stylesheet" />

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/bootstrap-3.0.0.js"></script>
<script src="~/Scripts/knockout-2.3.0.js"></script>
<script src="~/Scripts/GrapeCity.ActiveReports.Viewer.Html.js"></script>

<div>
    <div id="viewerContainer" style="width:100%;height:800px;border:1px solid gray;margin-top:20px;"></div>
</div>
    <script type="text/javascript">
        $(function () {
            var viewer = GrapeCity.ActiveReports.Viewer(
            {
                element: '#viewerContainer',
                report: {
                    id: "CustomDataSource.rdlx"
                    //id: "RdlReport2.rdlx"
                },
                reportService: {
                    url: 'ActiveReportsService.asmx'
                    //url: 'ActiveReports.ReportService.asmx'
                },
                uiType: 'desktop'
            });
        });
    </script>


 

6、修改RegisterRoutes

在Global.asax文件中找到RegisterRoutes,然后通过F12跳转到该方法,然后以下两行代码

  1.             routes.IgnoreRoute("WebService.asmx/{*pathInfo}");
  2.             routes.IgnoreRoute("{*allActiveReport}", new { allActiveReport = @".*\.ar11(/.*)?" });

 

7、修改RegisterBundles

为了防止MVC工程本身加载的JS与AR所需的JS文件冲突,可删除RegisterBundles方法中的全部代码


 

8、修改Web.config文件

这部操作与具体的IIS版本有关,如果在进行完以上操作之后运行工程出现错误,请删除Web.config文件中<system.webServer> <handlers>节点的以下代码。然后再进行测试

 

源码下载:

了解ActiveReports产品更多特性:

/developer/activereports

下载产品体验产品功能:

/download/?pid=16


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网