fineReport报表工具通过iframe的post方式提交表单大数据实现打印前预览

1、该文背景:

随着预览模板的数量变多,iframe以get方式提交表单受到 “URL地址总长度的限制“ ,出现错误或漏掉数据。

 

2、功能介绍:打印前预览多条(要打印的记录)       注意:是预览

本文中的js插件用到了JQWIdgets

一、首先配置好帆软

帆软使用前说明:帆软软件本身自带一个内置的服务器.我们可以通过项目直接访问我们事先配置好的帆软服务器地址来浏览打印的报表模板!!

 

①帆软的数据库连接配置

如果项目使用的是c3p0数据库连接池,可以直接将其中的值对应的拷贝到

帆软的数据库连接配置中如下图:
fineReport报表工具通过iframe的post方式提交表单大数据实现打印前预览
 
fineReport报表工具通过iframe的post方式提交表单大数据实现打印前预览
 

 ②项目访问到的报表模板应放在帆软指定的文件夹下面,如下图!!


fineReport报表工具通过iframe的post方式提交表单大数据实现打印前预览
 在帆软软件中,如果你将“报表模板”放置在正确的文件夹下(reportlets),是如下图显示的


fineReport报表工具通过iframe的post方式提交表单大数据实现打印前预览
 

-------------------------------------------------截至到这儿,帆软需要做的准备工作完毕-----------------------------------

帆软服务器的地址:

var reportPrintUrl = "http://localhost:8075/WebReport/ReportServer?__bypagesize__=false"

项目中js文件:

} else if (btnId === 'print') { //打印
        var rowindexes = getSelectedRows('listForm');
        if (rowindexes && rowindexes.length > 0) {
            var param = "";
            $.each(rowindexes, function (i, idx) {
                var data = $('#listForm').jqxGrid('getrowdata', idx);
                var finalAudit = $('#finalAudit').val();
                if (finalAudit === 'yes') {
                    param = param + "{reportlet:'/socialSecurity/SsmMedicalFeeFinalAuditPrint.cpt', formId : "+ data.id +"},";
                } else {
                    param = param + "{reportlet:'/socialSecurity/SsmMedicalFeeAuditFormPrint.cpt', formId : "+ data.id +"},";
                }
            });
            param = param.slice(0, -1);
            param = "[" + param + "]";
            //var printUrl = reportPrintUrl + param;
            //openWindow('printWind', 'printView', '打印', printUrl);
            openPrintWind('printWind', reportPrintUrl, param);
        }

------------------>>>>openPrintWind方法调用的是以下的,是iframe以post方式提交大数据的关键步----------

function openPrintWind(winId, url,param){
    var formContent = '<form action="'+url+'" method="post" target="reportFrame" id="postData_form">'+ 
    '<input name="reportlets" type="hidden" value="'+param+'"/>'+
    '</form>';
    var content = '<iframe id="reportFrame" name="reportFrame"  src="about:blank" scrolling="no" style="width:100%;height:99%;overflow-y: hidden" frameborder="0"></iframe>';
    $('#' + winId + 'Content').html(content);
    document.getElementById('reportFrame').contentWindow.document.write(formContent);
    document.getElementById('reportFrame').contentWindow.document.getElementById('postData_form').submit();
    $('#' + winId).jqxWindow('setTitle', "打印");
    $('#' + winId).jqxWindow('open');
    $('#' + winId).jqxWindow({
        showCloseButton : true
    });
}

 

效果如下:------------------->
fineReport报表工具通过iframe的post方式提交表单大数据实现打印前预览


以下是模板预览界面
fineReport报表工具通过iframe的post方式提交表单大数据实现打印前预览