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);
}
}
}
运行截图:
例子下载:
ActiveReports 报表控件| 下载试用
ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求,作为专业的报表工具为全球超过 300,000 开发人员提供了全面的报表开发服务。
您对ActiveReports产品的任何技术问题,都有技术支持工程师提供1对1专业解答,点击此处即可发帖提问>>技术支持论坛
葡萄城热门产品
活字格
打通现有软件,快速定制面向未来的个性化应用

SpreadJS
可嵌入您系统的在线Excel的纯前端表格控件

Wyn商业智能
可与企业自有系统深度集成,增强数据分析的 BI 工具
