本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[Java报表软件—技术知识]Java报表软件内置JS的使用之十
FineReport——报表技术领跑者 发表于 2010/9/24 10:16:53

自定义填报 在使用Java报表软件填报时,个别用户为了需求,需要自定义填报。 下面以FineReportJava报表软件在报表属性中的填报页面设置中可以自定义填报功能。 实例: 该实例实现首先在工具栏上加一个按钮,通知服务器要做填报;然后服务器获得当前的SessionIDInfor,取出当前的报表,获得报表中A1、B1扩展后的格子,再把这组数据insert到数据库中;最后返回客户端一个讯息,表示填报成功了,客户端再弹个对话框,提示填报成功了。 1.    连接数据库FRDemo 2.    报表设计 2.1    新建报表 2.2    模板设计 添加一个名为ds1的数据库查询:SELECT * FROM customer,表样设计,如图 500)this.width=500'> 2.3    自定义报表填报属性 500)this.width=500'> 2.4    定义单元格空间属性 2.5    自定义报表Web属性 500)this.width=500'> 点击菜单栏报表|报表Web属性,进入报表Web属性窗口,在填报页面设置栏目中,将左边需要显示的按钮拖到中间的窗口中,并在右边窗口添加加载结束事件,实现自定义的填报功能,如图所示 500)this.width=500'> 在加载结束事件窗口中添加事件的JS代码 500)this.width=500'> 具体js代码如下 var $toolbar = $('.FR-ToolBar-disabled > table >tbody>tr'); var option = { //"icon": "css:x-emb-email", "listeners": [ {"once": false, "action": function(e){ var xml = _g('${SessionID}').generateReportXML();  $.ajax({ url : "test.jsp", type : 'POST', data : {op : 'test1', sessionID : '${SessionID}', reportXML : xml}, complete : function(res, status) { FR.showDialog("Relation", 300, 400, res.responseText); }}) }, "eventName": "click" }], "text": "测试", "invisible": false, "type": "button", "disabled": false, "render": true}; $button = $('<div></div>'); FR.comp.create($button, "button", option); $tc = $("<td>").append($button); $toolbar.append($tc); 此段JS代码引用了一个test.jsp,代码为: <%@ page import="com.fr.web.CustomSubmit" %> <%@ page contentType="text/html" %> <%        CustomSubmit.dealWithTest(request, response); %> 将该test.jsp文件放在设计器安装的WebReport目录下。 该test.jsp文件又引用了一个CustomSubmit类,将该类编译后的.class文件放在 %WebReport\WEB-INF\classes\com\fr\web目录下,该类的代码具体如下 packagecom.fr.web; importjava.io.PrintWriter; importjava.util.ArrayList; importjava.util.List; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importcom.fr.base.ColumnRow; importcom.fr.report.Report; importcom.fr.report.core.FormReport; importcom.fr.report.core.PackedReport; importcom.fr.web.ParameterConsts; importcom.fr.web.core.SessionDealWith; importcom.fr.web.core.SessionIDInfor; importcom.fr.web.core.WebUtils; publicclassCustomSubmit { publicstaticvoiddealWithTest(HttpServletRequestreq, HttpServletResponse res) throws Exception { String sessionID = WebUtils.getHTTPRequestParameter(req,ParameterConsts.SESSION_ID); SessionIDInforsessionIDInfor = SessionDealWith.getSessionIDInfor(sessionID);             List cellRelation = newArrayList();     for(int i = 0, len = sessionIDInfor.getWorkBook2Show().getReportCount(); i <len; i++) {             Report report = sessionIDInfor.getWorkBook2Show().getReport(i);             if (report instanceofFormReport&& report instanceofPackedReport) {                 Report fr = (PackedReport)report; //请注意这步,我想要取的是A1和B1两个格子扩展以后的他们之间关系和值,如果是想拿A1,B1,D5,对应添加ColumnRow.valueOf("D5")既可 List rl = ((FormReport)report).getExtendColumnRowList(newColumnRow[] {ColumnRow.valueOf("A1"), ColumnRow.valueOf("B1")});                 for (int c = 0, cl = rl.size(); c < cl; c++) {                     ColumnRow[] crs = (ColumnRow[])rl.get(c);                     ColumnRowValue[] crvs = newColumnRowValue[crs.length];                     for (int index = 0, il = crs.length; index <il; index++) { crvs[index] = newColumnRowValue(crs[index], fr.getCellValue(crs[index].column, crs[index].row));                     }                     cellRelation.add(crvs);                 }             }         }           //cellRelation里面存放着扩展以后的格子之间的关系和格子的值 //以111.cpt模板为例,数据列扩展后城市NewYork对应ID 1和4,在cellRelation里面就是cellRelation.get(0)和cellRelation.get(1),对应着两个ColumnRowValue[] //第一个ColumnRowValue数组的ColumnRowValue[0]的ColumnRow是A1,Value是NewYork,ColumnRowValue[1]的ColumnRow是B1,Value是1 //第二个ColumnRowValue数组的ColumnRowValue[0]的ColumnRow是A1,Value是NewYork,ColumnRowValue[1]的ColumnRow是B2,Value是4         if (cellRelation.size() > 0) {             PrintWriter writer = WebUtils.createPrintWriter(res);             for (int i = 0, len = cellRelation.size(); i <len; i++) {                 ColumnRowValue[] crvs = (ColumnRowValue[])cellRelation.get(i);                 StringBuffersb = newStringBuffer();                 for (int v = 0, vl = crvs.length; v <vl; v++) {                     if (v != 0) {                         sb.append(" ");                     }                     sb.append(crvs[v].toString());                     if (v == vl - 1) {                         sb.append("<br />");                     }                 }                 writer.println(sb.toString());             }                       writer.flush();             writer.close();         }         }     publicstaticclassColumnRowValue {         privateColumnRowcr;         private Object value;         publicColumnRowValue(ColumnRowcr, Object value) {             this.cr = cr;             this.value = value;         }         publicColumnRowgetColumnRow() {             returncr;         }         public Object getValue() {             return value;         }         public String toString() { returnnew StringBuffer().append(cr.toString()).append(":").append(value.toString()).toString();                 }             } } 3.    保存并预览 点击填报预览,BS界面除了FR报表自带的提交按钮和数据校验按钮外,还多了一个测试按钮 500)this.width=500'> 点击测试按钮,出现测试界面 500)this.width=500'>   文章转自:http://blog.csdn.net/best_report/archive/2010/09/24/5902877.aspx

阅读全文(2220) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
 



The Neurotic Fishbowl

.: 公告

本博客提供详细的java报表软件的制作过程,发布java报表软件的版本更新信息,并适时对国内主流报表软件进行功能比较。


Bloginess

«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031

.: 我的分类(专题)

首页(357)
Java报表软件—制作笔记(54)
Java报表软件—功能比较(43)
Java报表软件—使用心得(21)
Java报表软件—行业动态(54)
Java报表软件—新闻资讯(48)
Java报表软件—技术知识(49)
Java报表软件—问题解析(2)


In the Bowl

.: 最新日志

如何对报表的参数控件赋值
java报表工具FineReport常见
报表怎么做 FineReport连接池原
报表怎么做FineReport数据连接之
报表模板之报表设计
报表模板之报表设计


.: 最新回复

回复:报表参数
好好学习,
好好学习,天天向上。买双 air jor
回复:理解FineReport缓存系列2
回复:理解FineReport缓存系列2


The Fishkeeper
blog名称:Java报表软件
日志总数:357
评论数量:69
留言数量:0
访问次数:1227843
建立时间:2006年4月16日



Text Me

.: 留言板

签写新留言

需要你的帮助


Other Fish in the Sea

.: 链接

报表开发工具  html5图表java报表开发工具




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.965 second(s), page refreshed 144825228 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号