<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 225  文章 - 98  trackbacks - 0
    <2010年9月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    隨筆分類

    相冊

    報表工具廠商們

    搜索

    •  

    最新評論

    閱讀排行榜

     自定義填報

    在使用Java報表工具填報時,個別用戶為了需求,需要自定義填報。

    下面以FineReportJava報表工具在報表屬性中的填報頁面設置中可以自定義填報功能。

    實例:

    該實例實現首先在工具欄上加一個按鈕,通知服務器要做填報然后服務器獲得當前的SessionIDInfor,取出當前的報表,獲得報表中A1B1擴展后的格子再把這組數據insert到數據庫中;最后返回客戶端一個訊息,表示填報成功了,客戶端再彈個對話框,提示填報成功了。

    1.    連接數據庫FRDemo

    2.    報表設計

    2.1    新建報表

    2.2    模板設計

    添加一個名為ds1的數據庫查詢:SELECT * FROM customer,表樣設計,如圖

    2.3    自定義報表填報屬性

    2.4    定義單元格空間屬性

    2.5    自定義報表Web屬性

    點擊菜單欄報表|報表Web屬性,進入報表Web屬性窗口,在填報頁面設置欄目中,將左邊需要顯示的按鈕拖到中間的窗口中,并在右邊窗口添加加載結束事件,實現自定義的填報功能,如圖所示

    在加載結束事件窗口中添加事件的JS代碼

    具體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;

    //請注意這步,我想要取的是A1B1兩個格子擴展以后的他們之間關系和值,如果是想拿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 14,在cellRelation里面就是cellRelation.get(0)cellRelation.get(1),對應著兩個ColumnRowValue[]

    //第一個ColumnRowValue數組的ColumnRowValue[0]ColumnRowA1ValueNewYork,ColumnRowValue[1]ColumnRowB1Value1

    //第二個ColumnRowValue數組的ColumnRowValue[0]ColumnRowA1ValueNewYork,ColumnRowValue[1]ColumnRowB2Value4

            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報表自帶的提交按鈕和數據校驗按鈕外,還多了一個測試按鈕

    點擊測試按鈕,出現測試界面



    文章轉自:http://blog.csdn.net/best_report/archive/2010/09/24/5902877.aspx



    了解Java報表工具就從這里開始
    posted on 2010-09-24 10:43 season 閱讀(258) 評論(2)  編輯  收藏 所屬分類: Java報表—技術知識

    FeedBack:
    # re: Java報表工具內置JS的使用之四 2010-10-12 16:56 甘寧
    代碼什么的最難懂了。。不過還是頂下  回復  更多評論
      
    # re: Java報表工具內置JS的使用之四 2010-10-19 12:44 xiaohong
    最近在學習軟件,這篇文章很詳細了,謝謝博主  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精品色播一区二区 | 毛片免费在线观看网址| 一级黄色毛片免费看| 亚洲一区二区三区无码国产| 一本色道久久综合亚洲精品| 日本免费电影一区| 成人免费淫片在线费观看| 四虎最新永久免费视频| 又大又硬又爽又粗又快的视频免费| 狼色精品人妻在线视频免费| 亚洲一久久久久久久久| 日韩毛片一区视频免费| 美女被羞羞网站免费下载| 亚洲偷自拍另类图片二区| 最新亚洲春色Av无码专区| 亚洲熟女综合一区二区三区| 亚洲a级在线观看| 亚洲AV无码一区二区三区久久精品 | www.亚洲日本| 亚洲AV无码国产一区二区三区| 自拍日韩亚洲一区在线| 亚洲乱人伦中文字幕无码| 偷自拍亚洲视频在线观看| 免费网站观看WWW在线观看| 99爱在线精品视频免费观看9| 麻豆视频免费观看| 凹凸精品视频分类国产品免费| 亚洲高清最新av网站| 亚洲电影在线免费观看| 精品国产亚洲AV麻豆| 在线观看免费无码专区| 免费视频中文字幕| 亚洲AV日韩AV鸥美在线观看| 亚洲人成色777777精品| a级男女仿爱免费视频| 妞干网在线免费视频| 国产AV无码专区亚洲AV毛网站| 亚洲最大的黄色网| 99视频免费在线观看| 成人AV免费网址在线观看| 久久久久久久亚洲精品|