很多报表控件提供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;

· 添加数据集:

名称:“DataSet1”

添加字段:

名称 值

订单编号 订单编号

客户名称 客户名称

购买时间 购买时间

发货时间 发货时间

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

2.2   设置【客户信息】报表

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

· 添加数据集:

名称:“DataSet1”

添加字段:

名称 值

客户编号 客户编号

客户名称 客户名称

电话 电话

地址 地址

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

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

<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: "客户信息.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

HTML5Viewer中如何运行时绑定多数据源的更多相关文章

  1. ActiveReports中如何在后台导出运行时绑定数据源报表

    ActiveReports支持运行时绑定数据源功能,这种绑定数据源方法使用较为普及,然而很多系统中都需要在后台导出报表文件,所以用户就很困惑,ActiveReports中如何在后台导出运行时绑定数据源 ...

  2. Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

    原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据 第14部分:在运行时绑定到真实的数据 原文地址: http://channel9.msdn.com/Series/ ...

  3. 使用dynamic引发的异常:无法对 null 引用执行运行时绑定

    今天上午运营反映有商户的账单没有生成. 查看日志,在批量生成账单服务执行过程中,因为如下异常而中断了: 跑批异常 Microsoft.CSharp.RuntimeBinder.RuntimeBinde ...

  4. SpringBoot运行时动态添加数据源

    此方案适用于解决springboot项目运行时动态添加数据源,非静态切换多数据源!!! 一.多数据源应用场景: 1.配置文件配置多数据源,如默认数据源:master,数据源1:salve1...,运行 ...

  5. [C++]C++中的运行时类型检测

    Date:2014-1-3 Summary: 使用C++中的运行时类型检测.(文章重点在于记录本人的使用情况,并非深层讨论RTTI) Contents:写习惯C#的我,在C++依然存在哪些.NET的惯 ...

  6. 翻译:JVM虚拟机规范1.7中的运行时常量池部分(二)

    本篇为JVM虚拟机规范1.7中的运行时常量池部分系列的第二篇. 4.4.4. The CONSTANT_Integer_info and CONSTANT_Float_info Structures ...

  7. 在Amazon FreeRTOS V10中使用运行时统计信息

    在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文,一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章,本人觉得很有启发,特将其翻译过来以备参考 ...

  8. Visual C++中对运行时库的支持

    原文地址:http://blog.csdn.net/wqvbjhc/article/details/6612099 一.什么是C运行时库 1)C运行时库就是 C run-time library,是 ...

  9. Android中Activity运行时屏幕方向与显示方式详解

    现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运 ...

随机推荐

  1. AngularJs的UI组件ui-Bootstrap---tabs控件

    tabs控件使用uib-tabset指令和uib-tab指令,效果是这样的: <!DOCTYPE html> <html ng-app="ui.bootstrap.demo ...

  2. CSS3 Border-image

    CSS3中有关于border的属性我们一起学习完了圆角border-radius和边框颜色border-color,只剩下最后一个边框图片border-image.今天我们就一起来学习这个border ...

  3. MD5 Checksums for R12.1.1 Rapid Install Media (文档 ID 802195.1)

    Oracle EBusiness Suite R12.1.x Rapid Installmd5 Checksums November 2011 Section      1: Overview Sec ...

  4. PHP中include()与require()

    引用文件的方法有两种:require 及 include. require 的使用方法如 require("file.php"); .这个函数通常放在 PHP 程序的最前面,PHP ...

  5. MarkDown简要语法

    1.标题 2.列表 3. 引用 4.图片与连接 实现链接有两种方式,分别是内联方式和引用方式 内联方式 [This baidu link](http://www.baidu.com)效果如:This ...

  6. iOS高性能设置圆角

    自建一个分类可以设置. -(void)cornerImageWithSize:(CGSize)size fillColor:(UIColor *)fillColor completion:(void( ...

  7. Chapter 2: 随机变量

    1. 随机变量, 离散型随机变量,连续型随机变量 设$\Omega$为随机试验的样本空间,$X:\Omega \rightarrow R$是定义在样本空间$\Omega$上的实值函数,则称$X$为随机 ...

  8. PHP将图片二进制转换

    http://www.360doc.com/content/14/0325/10/947551_363526874.shtml

  9. dubbo(转载)

    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...

  10. JavaScript parseInt() 函数

    定义和用法 parseInt() 函数可解析一个字符串,并返回一个整数. 语法 parseInt(string, radix) 参数 描述 string 必需.要被解析的字符串. radix 可选.表 ...