Html5的报表数据源:运行时数据源

ActiveReports 支持在设计时和运行时设置报表数据源,本文将重点介绍如何在Html5下使用运行时为RDL/页面报表设置报表数据源。

发布于 2015/07/29 00:00

ActiveReports

ActiveReports 支持在设计时和运行时设置报表数据源,本文将重点介绍如何在Html5下使用运行时为RDL/页面报表设置报表数据源。

由于在Html5下使用javascript来加载运行报表,所有运行时绑定数据源的方式也其它类型的工程略有不同。

1.加载报表Viewer

            var viewer = GrapeCity.ActiveReports.Viewer({
                element: '#viewerContainer',
                reportService: {
                    url: '/ActiveReports.ReportService.asmx'
                },
                uiType: 'desktop',
                reportLoaded: function () {
                    reportsButtons.prop('disabled', false);
                }
            });

 

2.添加button事件

            var reportsButtons = $('#btnReport button');
            reportsButtons.bind('click', function (ev) {
                ev.stopImmediatePropagation();
                reportsButtons.removeClass('active');
                var target = $(ev.target);
                target.addClass('active');
                reportsButtons.prop('disabled', true);
                var reportOption = {
                    id: target.attr('data-bind')
                };
                viewer.option('report', reportOption);
            });

 

3.重写WebService方法,最主要的是OnCreateReportHandler方法

public class WebService1 : GrapeCity.ActiveReports.Web.ReportService
    {
        PageDocument _pageDocument;
        PageReport definition;
        [WebMethod]
        protected override object OnCreateReportHandler(string reportPath)
        {
            switch (reportPath)
            {
                case "Reports/SalesDetail.rdlx":
                    definition = (PageReport)base.OnCreateReportHandler(reportPath);
                    _pageDocument = new PageDocument(definition);
                    definition.Document.LocateDataSource += new LocateDataSourceEventHandler(Document_LocateDataSource);
                    return definition;
                case "SalesSubDetail":
                    definition = (PageReport)base.OnCreateReportHandler("Reports/" + reportPath + ".rdlx");
                    _pageDocument = new PageDocument(definition);
                    return definition;
                default:
                    return base.OnCreateReportHandler(reportPath);
            }
        }
        void Document_LocateDataSource(object sender, LocateDataSourceEventArgs args)
        {
            string connStr = Server.MapPath("/Data/NWind_CHS.mdb");
            Access dl = new Access(connStr);
            if (args.DataSourceName == "SubDetail" && args.DataSetName == "SubDetailSet1")
            {
                String Id = args.Report.Parameters[0].CurrentValue.ToString();
                string productSql = string.Format("select 产品.产品名称, 产品.单位数量, 订单明细.单价, 订单明细.数量, 订单明细.折扣 from 订单明细 inner join 产品 on 订单明细.产品ID = 产品.产品ID where 订单ID = {0}", Id);
                args.Data = dl.ExecuteDataset(productSql);
            }
            else
            {
                string productSql = string.Format("select 订单.* from 订单");
                args.Data = dl.ExecuteDataset(productSql);
            }
        }
    }

 

运行截图:

2015-07-29_135224

例子下载:

ActiveReports 报表控件| 下载试用

ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求,作为专业的报表工具为全球超过 300,000 开发人员提供了全面的报表开发服务。

您对ActiveReports产品的任何技术问题,都有技术支持工程师提供1对1专业解答,点击此处即可发帖提问>>技术支持论坛

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态