• HTML5Viewer中如何运行时绑定多数据源


    很多报表控件提供HTML5Viewer 支持跨设备的报表系统,当然在很多情况下,一个系统可包含多个报表文件,这些报表的数据有可能均为运行时绑定数据源,那么在html5viewer中对一张报表通过重写WebService文件来实现运行时数据绑定,在多张报表时该如何区分是哪张报表的数据集呢?

    并绑定到对应数据呢?

    本文就主要来讲解在HTML5Viewer中为多张报表绑定运行时数据源。

    开发环境

    Visual Studio 2013 +ActiveReports 10  SP2+MVC4程序

    实现步骤

    (一)在 VS 中创建一个 ASP.NET MVC 4 的应用程序

    (二)在应用程序中添加RDL报表

    在项目中添加RDL 报表: 订单信息.rdlx;客户信息.rdlx;

    2.1 设置【订单信息】报表

    · 添加数据源:

    名称为DataSource1, 类型为Object Provider;

    clip_image001

    · 添加数据集:

    名称:“DataSet1”

    添加字段:

    名称 值

    订单编号 订单编号

    客户名称 客户名称

    购买时间 购买时间

    发货时间 发货时间

    clip_image002[6]

    · 添加表格,并设置字段值

    clip_image003[4]

    2.2   设置【客户信息】报表

    · 名称为DataSource1, 类型为Object Provider;

    clip_image001[1]

    · 添加数据集:

    名称:“DataSet1”

    添加字段:

    名称 值

    客户编号 客户编号

    客户名称 客户名称

    电话 电话

    地址 地址

    clip_image004

    · 添加表格,并设置字段值

    clip_image005

    (三)在Index.cshtml 中初始化Html5Viewer

    <div>
        <div id="viewerContainer" style="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: "客户信息.rdlx"
                        id: "订单信息.rdlx"
                    },
                    reportService: {
                        url: 'ActiveReportsService.asmx'
                    },
                    uiType: 'desktop'
                });
            });
        </script>

    (四)新建WebService.asmx文件

    继承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;
           }

    在LocateDataSource 方法中通过args.Report.PageReport.Report.Description来判断报表,代码:

    void Document_LocateDataSource(object sender, LocateDataSourceEventArgs args)
            {
                switch (args.Report.PageReport.Report.Description)
                {
                    case "客户信息":
                        string customerID = args.Report.Parameters[0].CurrentValue.ToString();
                        args.Data = GetCustomer(customerID);
                        break;
                    case "订单信息":
                        string orderID = args.Report.Parameters[0].CurrentValue.ToString();
                        args.Data = GetOrder(orderID);
                        break;
                    default:
                        break;
                }
            }

    附件下载:

    ActiveReports10_Mvc4.zip

  • 相关阅读:
    Hbase数据库简介
    v8引擎详解
    TCP、UDP和HTTP详解
    关于websocket的代码,实现发送信息和监听信息(前端 后端(node.js))
    浏览器的渲染流程
    事件的各个阶段
    回流和重绘
    Nginx入门教程
    解决浏览器跨域
    TCP三次握手
  • 原文地址:https://www.cnblogs.com/lenkaguo/p/5949538.html
Copyright © 2020-2023  润新知