JSViewer 是 ActiveReports 主要的报表展示工具,报表参数是报表接受外界输入的唯一值,因此我们经常需要使用从前台为报表传值后,获取值后实现数据查找,数据过滤,以及其他的权限控制等,本篇文章来分享下如何使用JSViewer在前端传值的,并在后台获取到当前值。
1. JSViewer 初始化
即当进入页面时,先创建JSViewer 对象。
- viewer = GrapeCity.ActiveReports.JSViewer.create({
- element: '#viewerContainer'
- });
复制代码
2. 当用户选择加载对应的报表时,调用JSViewer的OpenReport 接口为报表传递需要打开的报表ID 及对应的参数格式
- viewer.openReport('AcmeStore.rdlx', [{name:'p1',values:['test']}]);
复制代码
注意: openReport 包含两个参数,第一个是报表名,第二个是 对应的参数对象数组,即一个报表可能会有多个参数,因此本身是数组外部会用[]包围,每一个参数是一个json 对象会包含参数名和参数值,参数值也可能是多值存在数组中因此参数的格式为
[{name:'参数1',values:["value1"]},{name:'参数2',values:["value1"]}]
3. 前台的代码已经完成了,现在再看后台中如何获取:
一般情况下后台获取报表参数,可以通过SetLocateDataSource 方法,注意不是LocateDataSource handler,这两个会有区别,只有SetLocateDataSource 方法才有 args.ReportParameters对象。
- app.UseReporting(settings =>
- {
- //settings.UseEmbeddedTemplates(EmbeddedReportsPrefix, Assembly.GetAssembly(GetType()));
- settings.UseCustomStore(getReportFn);
- settings.UseCompression = true;
- settings.SetLocateDataSource(args => {
- var temp = args.ReportParameters[0].Value;
- DataTable dt = new DataTable();
- dt.Columns.Add("a1");
- dt.Columns.Add("a2");
- dt.Rows.Add("a1", "a1");
- return dt; });
-
- });
复制代码
|
|