很多报表控件提供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. 初学Objective-C语言需要了解的星星点点

             其实大多数开发初学者都有一些相同的特点,可以说是一种“职业病”.Most有其他平台开发基础的初学者,看到Xcode就想摩拳擦掌:看到Interface Builder就想跃跃欲试:而 ...

  2. JAG Summer 2012 Day 4 C Connect

    状压dp,由于枚举两维状态会GG,所以只枚举当前位置前m个的状态,就是这个样子大概= =: 呆马: #include <iostream> #include <cstdio> ...

  3. 关于strlen误用的一点记录

    今天帮一个朋友查一个错误,是运行时报vector iterator incompatible,一般这种问题是向量和迭代器的类型不兼容,或者是进行迭代器判等时前后向量的结构发生变化,如erase操作之后 ...

  4. Makefile使用库

    这篇文章演示了Makefile使用mysqlpp库和lua库的写法. test.cpp: #include <iostream> #include <stdint.h> #in ...

  5. jQuery使用serialize()表单序列化时出现中文乱码问题&js获取url中的参数,并保证获取到的参数不乱码

    序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 原因:.serialize()自动调用了encodeURIComp ...

  6. 在centos7中安装Robot Framework

    安装前景介绍: 最初,我们是在Windows环境下搭建Robot Framework来对我们的服务进行接口测试的(想知道如何在Windows下安装Robot Framework,可以参考我同事的博客h ...

  7. php + jQuery自动完成插件autocompleter

    autocompleter是一个简单的,容易的,可定制的自动完成功能插件,支持缓存. 1.引用脚本 <script type="text/javascript" src=&q ...

  8. web项目 log4j2的路径问题

    项目中用到log4j2记录日志,结果运行的时候总也不见log文件的产生. 查看官方文档得知,在web项目中使用log4j2需要加入log4j-web包 log4j2.xml <?xml vers ...

  9. GDUFE-OJ 1070上班打卡 ^位运算

    Problem Description: 某公司上班使用打卡制度,员工需要在打卡机器上打入和打出才算上班.每个员工都有自己对应编号K,编号为一个整数(1 <= K <=50000),某天有 ...

  10. EPSON LQ610K 设置税控盘打印发票的格式

    问题困扰 之前一直是手动调试发票打印格式,浪费发票纸张不说,而且还浪费时间.今天在Parrells Desktop里利用Bonjour设置打印机的时候,找到了EPSON网站有这方面的介绍,根据上面的提 ...