AR14及AR15 JSViewer 在前台进行报表传参后,在后端获取前台参数传值
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.Value;
DataTable dt = new DataTable();
dt.Columns.Add("a1");
dt.Columns.Add("a2");
dt.Rows.Add("a1", "a1");
return dt; });
});
页:
[1]