本帖最后由 加菲喵 于 2015-9-10 15:32 编辑
问题描述:重写设计器工具栏里的导出功能,并且将参数面板里的过滤条件加入导出文件名里
内容:1.导出excel 2.导出pdf文档来源: 原创,自己在使用finereport的过程中遇到的问题,并解决的
步骤:
1 打开FineReport_8.0\WebReport\WEB-INF\reportlets\GetStarted.cpt报表
2 点击模板——模板web属性——分页预览设置
要点:(1)编辑工具栏按钮,添加自定义按钮 (2) 选择为该模板单独设置,并启用工具栏按钮
3 进入工具栏按钮编辑
要点:(1)命名自定义按钮 (2)设置按钮图标 (3)填写自定义事件(4)js代码:export('excel');//用'pdf'替换'excel'表示导出pdf格式
4 创建export.js文件,路径为WebReport/js/export.js
export.js代码如下:
//1.导出调用函数,获取参数面板参数和构造出文件名
function paraNtitle(name_widgets){
var parameters=Array();
var url='';
var title='';
var start_date;
var end_date;
$.each(name_widgets,function(i,item){
if (item.options.type !=='label' && item.options.type !=='button'&& item.options.type !=='formsubmit') {
var widgetName=item.options.widgetName.toLowerCase();
var value=item.getValue();
var text=item.getText();
if(typeof(value)!='undefined' && value!==''){
url+='&'+widgetName+'='+value;
}
if(text!=='' && typeof(text)!='undefined'){
title+=text+'_';
}
}
});
parameters["parameter"]=url;
parameters["title"]=title;
return parameters;
}
//2.导出函数
//mode='pdf' 表示导出pdf mode='excel' 表示导出excel
function exports(mode){
var len= $("tr[tridx=3]","div.content-container").children().eq(0).html().length;
//console.log('len='+len);
if(len>0){//查询结构有无数据,有数据才导出,无数据则提示
var url=window.location.protocol+'//'+window.location.host+window.location.pathname;
var search=window.location.search;
var pos=search.indexOf('&');
if(pos>0){
search=search.substring(0,pos);
}
url=url+search;
var parameters=paraNtitle(contentPane.parameterEl.name_widgets);//调用自定义函数paraNtitle
//console.log(parameters);
var reportName='地区销售概况';//报表名称
var filename=parameters['title']+reportName;//将参数和报表名称结合,构造文件名
url+=parameters['parameter']+'&format='+mode+'&__filename__='+filename;
window.open(FR.cjkEncode(url));
}else{
FR.Msg.alert("提示","没有内容可下载");
}
}
5 引用js文件,在自定义导出按钮js事件中添加引用。
预览效果:
点击分页预览,选择华东——查询,查询出结果后点击导出Excel按钮,如图:
若是要导出pdf,选择pdf图标后,调用exports('pdf');即可
|