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

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

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

    Java軟件報表軟件技術(shù)博客

    java報表軟件技術(shù)匯總 java報表軟件制作 報表軟件新聞
    posts - 355, comments - 100, trackbacks - 0, articles - 3
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    自定義填報

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

    下面以FineReportJava報表軟件在報表屬性中的填報頁面設(shè)置中可以自定義填報功能。

    實例:

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

    1.    連接數(shù)據(jù)庫FRDemo

    2.    報表設(shè)計

    2.1    新建報表

    2.2    模板設(shè)計

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

    2.3    自定義報表填報屬性

    2.4    定義單元格空間屬性

    2.5    自定義報表Web屬性

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

    在加載結(jié)束事件窗口中添加事件的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文件放在設(shè)計器安裝的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兩個格子擴(kuò)展以后的他們之間關(guān)系和值,如果是想拿A1,B1,D5,對應(yīng)添加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里面存放著擴(kuò)展以后的格子之間的關(guān)系和格子的值

    //111.cpt模板為例,數(shù)據(jù)列擴(kuò)展后城市NewYork對應(yīng)ID 14,在cellRelation里面就是cellRelation.get(0)cellRelation.get(1),對應(yīng)著兩個ColumnRowValue[]

    //第一個ColumnRowValue數(shù)組的ColumnRowValue[0]ColumnRowA1,ValueNewYork,ColumnRowValue[1]ColumnRowB1Value1

    //第二個ColumnRowValue數(shù)組的ColumnRowValue[0]ColumnRowA1,ValueNewYork,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.    保存并預(yù)覽

    點擊填報預(yù)覽,BS界面除了FR報表自帶的提交按鈕和數(shù)據(jù)校驗按鈕外,還多了一個測試按鈕

    點擊測試按鈕,出現(xiàn)測試界面



     文章轉(zhuǎn)自:http://blog.csdn.net/best_report/archive/2010/09/24/5902877.aspx



    主站蜘蛛池模板: 国产成人在线观看免费网站| 插鸡网站在线播放免费观看| 亚洲av永久无码精品天堂久久 | 男人天堂免费视频| 一级毛片a免费播放王色电影| 无套内谢孕妇毛片免费看看| 亚洲第一成年免费网站| 国产AV日韩A∨亚洲AV电影| 小说专区亚洲春色校园| 免费人成大片在线观看播放电影| 夜夜爽妓女8888视频免费观看| 丰满妇女做a级毛片免费观看| eeuss影院免费92242部| 中文字幕一区二区三区免费视频| 羞羞视频免费网站在线看| 2022国内精品免费福利视频| 免费在线黄色电影| 97在线视频免费| 韩国免费一级成人毛片| 麻豆国产人免费人成免费视频| 国产一区二区免费在线| MM131亚洲国产美女久久| 亚洲国产精品无码久久SM| 无码乱人伦一区二区亚洲| 亚洲国产韩国一区二区| 亚洲欧美精品午睡沙发| 三级片免费观看久久| 黄页免费在线观看| 成人免费视频69| 国产一区二区免费在线| 国产精品亚洲成在人线| 亚洲欧洲日产韩国在线| 日韩国产精品亚洲а∨天堂免| 成人国产精品免费视频| 国产男女爽爽爽爽爽免费视频| 宅男666在线永久免费观看| 久久久久亚洲AV综合波多野结衣| 亚洲国产精品lv| 亚洲精品无码专区久久| 国产免费人成视频尤勿视频| 18未年禁止免费观看|