本帖最后由 qq525566534 于 2021-8-28 14:42 编辑
实验了下不行,显示这个错误
这是我模拟你给的代码:
// 1. 生成一个空的主报表对象
var mainRpt = JSON.parse('{"definition":{"Name":"Report","Width":"2pt","Layers":[{"Name":"default"}],"CustomProperties":[{"Name":"DisplayType","Value":"Page"},{"Name":"SizeType","Value":"Default"},{"Name":"PaperOrientation","Value":"Portrait"}],"Page":{"PageWidth":"8.5in","PageHeight":"11in","RightMargin":"1in","LeftMargin":"1in","TopMargin":"1in","BottomMargin":"1in","Columns":1,"ColumnSpacing":"0in"},"Body":{"Height":"2pt"}}}');
// 2. 循环处理需要拼接的报表到containerItems集合中
rpts.forEach(async (subreport, index) =>
{
//3.初始化一个容器给该子报表
var containerTemplate01 = JSON.parse(JSON.stringify(containerTemplate));
//4.第index个子报表的json内容加载
var subreportItem = JSON.parse((subreport.Json));
//5.参数传递
if (!subreportItem.Parameters) subreportItem.Parameters = [];
try
{
subreportItem.Parameters["ids"].Value = orderIDs;
}
catch
{
let mainParameter = JSON.parse(JSON.stringify(reportparameter));
mainParameter.Name = 'ids';
mainParameter.Value = orderIDs;
subreportItem.Parameters.push(mainParameter);
}
try
{
subreportItem.Parameters["token"].Value = token;
}
catch
{
let mainParameter = JSON.parse(JSON.stringify(reportparameter));
mainParameter.Name = 'token';
mainParameter.Value = token;
subreportItem.Parameters.push(mainParameter);
}
//组织子报表的json对象,并装入容器对象中,利用容器的PageBreak属性解决分页问题
subreportItem.ReportName = "Subreport" + index;//指定子报表控件的 ReportName属性。
subreportItem.Name = "Subreport" + index;//设置子报表的名称
//subreportItem.Top = topPosition + "cm";
containerTemplate01.Name = "Container" + index;
containerTemplate01.ReportItems.push(subreportItem);
containerTemplate01.Top = topPosition + "cm";
if (index == rpts.length - 1)
containerTemplate01.PageBreak = "";
containerItems.push(containerTemplate01);
if (index = 0)
topPosition = 0;
else
topPosition = topPosition + 5;
});
// 7. 拼接子报表到一个空的主报表mainRpt中
if (!mainRpt.definition.Body.ReportItems) mainRpt.definition.Body.ReportItems = [];
mainRpt.definition.Body.ReportItems.length = 0;
mainRpt.definition.Body.ReportItems.push(...containerItems);
viewer.open(mainRpt);
//这是打印出的主报表内容
|