[老]选中内容批量打印/导出
1. 问题描述
有些时候在进行批量导出或者批量打印时,只想实现对勾选选中的部分行进行打印,并且选中行的内容传递给新的模板,进行打印,不同行传递的模板不一样。那么该如何实现呢?
2. 示例
2.1 数据准备
新建一个数据查询ds1:SELECT * FROM 订单 where 1=1 ${if(len(p1) == 0,"","and 订单ID in ('" + p1 + "')")} limit 10
2.2 报表设计
主报表设计
C1、C2单元格设置为按钮控件,C1单元格的按钮名称为批量打印,C2单元格的按钮名称为批量导出。
B4单元格设置为复选框控件。
将ds1中的订单ID,货主名称,是否已付拖入到单元格C4、D4、E4中。
参数界面设置:
给下拉复选框控件绑定数据字典,类型设置为数据查询,实际值和显示值都是订单ID。
将报表另存为test.cpt
子报表设置
将此子报表另存为test10001.cpt,用于接收test.cpt传过来的参数。
将此子报表另存为test10002.cpt,用于接收test.cpt传过来的参数。
2.3 添加批量打印JS事件
右击C1单元格,点击控件设置,弹出控件设置对话框,添加点击事件,如下图所示:
批量打印JS代码如下:
var printurl="http://localhost:8075/WebReport/ReportServer";
var names = [];
var paths = [];
var singlepaths = [];
var url = "ReportServer?reportlets=(";
var $span = $('.fr-checkbox-checkon'); //获取选中的复选框
var $tds = $("td").has($span); //定义选中复选框的单元格
var $trs = $("tr").has($tds);
var p=[];
for(var i=0; i<$trs.length;i++){
var name = $("td:eq(2)",$($trs[i])).html();
//获取选中的C4单元格的值
var a = $("td:eq(3)",$($trs[i])).html();
var b = $("td:eq(4)",$($trs[i])).html();
//names.push(name); //将选中的值放到数组中
var cptpath ="test"+ name+".cpt"
var urlstring = "{reportlet:" +"'"+FR.cjkEncode(cptpath)+"'"
+",p1:"+"'"+name+"'"
+",p2:"+"'"+a+"'"
+",p3:"+"'"+b+"'"
+
"}";
debugger;
paths.push(urlstring);
debugger;
}
if(paths.length>0){var rpaths=paths.join(",");
var reportlets="["+rpaths+"]";
var config = {
url : printurl,
isPopUp : false,
data : {
reportlets:reportlets
}
}; }
debugger;
FR.doURLPDFPrint(config);
2.4 添加批量导出JS事件
右击C2单元格,点击控件设置,弹出控件设置对话框,添加点击事件,如下图所示:
批量导出JS代码如下:
var names = []; //盛放cpt名字和参数值的数组
var as=[];//盛放参数值的数组
var bs=[];//盛放参数值的数组
var paths = [];
var singlepaths = [];
var url = "ReportServer?reportlets=(";
var $span = $('.fr-checkbox-checkon'); //获取选中的复选框
var $tds = $("td").has($span); //定义选中复选框的单元格
var $trs = $("tr").has($tds);
for(var i=0; i<$trs.length;i++){
var name = $("td:eq(2)",$($trs[i])).html(); //获取选中的C3单元格的值
//names.push(name); //将选中的值放到数组中
var a = $("td:eq(3)",$($trs[i])).html();
console.log(a);
//获取选中的D3单元格的值
//as.push(a); //将选中的值放到数组中
var b = $("td:eq(4)",$($trs[i])).html();
console.log(b);
//获取选中的E3单元格的值
//bs.push(b); //将选中的值放到数组中
var cptpath = "/test"+name+".cpt&p1="+name+"&p2="+a+"&p3="+b; //获取选中的D3单元格的值
var urlstring = "{reportlet:" + FR.cjkEncode(cptpath) + "}";
//paths.push(urlstring);
//singlepaths.push(FR.cjkEncode(cptpath));
debugger;
window.open("ReportServer?reportlet=" + FR.cjkEncode(cptpath+"&format=pdf"),"name" + i);
//FR.Msg.toast(i);
}
//alert(names + ";" + paths + ";" + singlepaths);
//url = url + paths + ")" + "&format=word&__filename__=Xname";
//window.open(url);
2.5 效果预览
保存后,点击填报预览,即可对选中行的数据根据不同模板打印或导出。
3. 移动端
移动端不支持各种打印和导出方式
附件列表
标签:
已验证
文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201)