帆软报表(多sheet)自定义分页查询
生活随笔
收集整理的這篇文章主要介紹了
帆软报表(多sheet)自定义分页查询
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
功能介紹:? ?? 1、利用帆軟報表之所報表時候,有時候需要在填報模式下運行,可是填報模式下沒有分頁;另說,如果數(shù)據(jù)過多,需要通過分頁查詢來提高查詢效率,改善用戶體驗。因此需要用到分頁查詢。 2、當多個sheet,切換sheet時,需要面板做出相應改變,此時需要自定義一些js函數(shù)。 一、定義模板參數(shù) 為了滿足多個sheet同時實現(xiàn)自定義分頁,需要在模板參數(shù)處定義如下參數(shù): page1:sheet1對應的當前顯示頁數(shù) page2:sheet2對應的當前顯示頁數(shù)(·······再有多個sheet,遞增即可) amount:每頁顯示個數(shù) sheet:當前sheet索引,目的在于記錄當前所選sheet,以便于判斷不用sheet,從而做出相應操作 同時為了以后操作的便利,在面板上可以添加對應以上四個參數(shù)對應的控件,調(diào)整為不可見
二、在每個sheet頁面中添加一行隱藏行
由于填報模式下沒有頁數(shù)操作功能,因此需要自定義添加一些按鈕。該隱藏行中可以作為頁碼等信息的暫存空間。 A1:上一頁頁碼 A2:下一頁頁碼 A3:總頁數(shù) A4:當前頁碼 A5:斜線‘/’ 注意,此行要做隱藏,選中此行,右鍵就有“隱藏”選項三、添加自定義按鈕以及JS事件
1、打開‘模板Web屬性’ 2、選中‘填報頁面設置’,修改2)為‘為模板單獨設置‘,3)中是前面七個是添加的自定義按鈕;通過4)按鈕進行設置;5)操作是添加‘加載結(jié)束’事件;接下來詳細講述每個步驟; 3、點擊4)之后彈出下面頁面,自上而下七個按鈕分別為首頁、上一頁、頁碼顯示框、斜杠、總頁數(shù)、下一頁、末頁 通過‘編輯’按鈕可以改圖標,然后依次添加自定義事件 自定義事件: 首頁: var sheet = _g().parameterEl.getWidgetByName('sheet').getValue(); if(sheet==1) { _g().parameterEl.getWidgetByName('page1').setValue(1); }else{ _g().parameterEl.getWidgetByName('page2').setValue(1); } _g().parameterEl.getWidgetByName('Search').fireEvent('click');//Search為查詢按鈕的名字 上一頁: var beforepage = contentPane.curLGP.getCellValue("A1"); if(beforepage > 0){ var sheet = _g().parameterEl.getWidgetByName('sheet').getValue(); if(sheet==1) { _g().parameterEl.getWidgetByName('page1').setValue(beforepage); }else{ _g().parameterEl.getWidgetByName('page2').setValue(beforepage); } _g().parameterEl.getWidgetByName('Search').fireEvent('click'); } 頁碼顯示框: var toolbar = contentPane.toolbar;???????? var items = toolbar.options.items;?????? var customButton = items[2]; var inner = customButton.$btnWrap; var btnWrapper = $("em", inner); var $input = $("input", btnWrapper); //取這個控件 $input.blur(function() { var targetpage = $input.val(); var endpage = contentPane.curLGP.getCellValue("C1"); if (parseInt(targetpage) > parseInt(endpage) || parseInt(targetpage) < parseInt(1)) { alert("你輸出的頁數(shù)不再指定范圍內(nèi)"); } else var sheet = _g().parameterEl.getWidgetByName('sheet').getValue(); if(sheet==1) { _g().parameterEl.getWidgetByName('page1').setValue(targetpage); }else{ _g().parameterEl.getWidgetByName('page2').setValue(targetpage); } _g().parameterEl.getWidgetByName('Search').fireEvent('click'); }); 斜桿:無 總頁數(shù):無 下一頁: var nextpage = contentPane.curLGP.getCellValue("B1"); var endpage = contentPane.curLGP.getCellValue("C1"); if(nextpage<=endpage){ var sheet = _g().parameterEl.getWidgetByName('sheet').getValue(); if(sheet==1) { _g().parameterEl.getWidgetByName('page1').setValue(nextpage); }else{ _g().parameterEl.getWidgetByName('page2').setValue(nextpage); } _g().parameterEl.getWidgetByName('Search').fireEvent('click'); } 末頁: var endpage = contentPane.curLGP.getCellValue("C1"); var sheet = _g().parameterEl.getWidgetByName('sheet').getValue(); if(sheet==1) { _g().parameterEl.getWidgetByName('page1').setValue(endpage); }else{ _g().parameterEl.getWidgetByName('page2').setValue(endpage); } _g().parameterEl.getWidgetByName('Search').fireEvent('click'); 4、添加‘結(jié)束事件’ 如下: var toolbar = contentPane.toolbar; var items = toolbar.options.items; //JQUERY取我們的工具欄上的按鈕.items[2]代表的是第三個,也就是那個顯示成文本框按鈕。 var customButton=items[2]; var inner = customButton.$btnWrap; var btnWrapper = $("em", inner); //修正這個按鈕的屬性,讓它變成文本類型,居中,鼠標放上次圖標是編輯狀態(tài)。 btnWrapper.html("<input data-role='none' type='text'??class='fr-texteditor' style='width: 42px; height: 16px; text-align: center;'>"); //獲取D1單元格的值就是page,也就是當前頁。 var cellValue = contentPane.curLGP.getCellValue("D1"); var $input = $("input", btnWrapper); //給這個文本控件復制,用的是JQUERY的方法,可以COPY。 $input.val(cellValue); var total=contentPane.curLGP.getCellValue("C1"); //把總頁數(shù)顯示在第5個控件上,因為這個數(shù)值可能是小數(shù),所以判斷下要不要加一處理。 contentPane.toolbar.options.items[4].setText(total); //把斜線寫在第4個控件上。 contentPane.toolbar.options.items[3].setText(contentPane.curLGP.getCellValue("E1")); $(".fr-sheetbutton-container").click(function()//切換sheet時?? {var a=contentPane.$contentPane.data('TabPane').tabBtns[contentPane.selectedIndex].options.name;//獲取當前sheet的名字?? if(a=="sheet1")? //表示第一個sheet,sheet1需要替換成自己對應的sheet名稱 {??? _g().parameterEl.getWidgetByName('sheet').setValue(1); //當前sheet需要顯示或者隱藏的 控件 _g().parameterEl.getWidgetByName('當前面板所需要顯示的控件名稱').setVisible(true);???? _g().parameterEl.getWidgetByName('當前面板所需要隱藏的控件名稱').setVisible(true);???? //獲取D1單元格的值就是page,也就是當前頁。 cellValue = contentPane.curLGP.getCellValue("D1"); //給這個文本控件復制,用的是JQUERY的方法,可以COPY。 $input.val(cellValue); var total=contentPane.curLGP.getCellValue("C1"); //把總頁數(shù)顯示在第5個控件上,因為這個數(shù)值可能是小數(shù),所以判斷下要不要加一處理。 contentPane.toolbar.options.items[4].setText(total); }?? else {?? _g().parameterEl.getWidgetByName('sheet').setValue(2); //當前sheet需要顯示或者隱藏的 控件 _g().parameterEl.getWidgetByName('當前面板所需要顯示的控件名稱').setVisible(true);? ?? _g().parameterEl.getWidgetByName('當前面板所需要隱藏的控件名稱').setVisible(true);???? //獲取D1單元格的值就是page,也就是當前頁。 cellValue = contentPane.curLGP.getCellValue("D1"); //給這個文本控件復制,用的是JQUERY的方法,可以COPY。 $input.val(cellValue); var total=contentPane.curLGP.getCellValue("C1"); //把總頁數(shù)顯示在第5個控件上,因為這個數(shù)值可能是小數(shù),所以判斷下要不要加一處理。 contentPane.toolbar.options.items[4].setText(total); } });?? 四、添加模板數(shù)據(jù)集 1、oracle分頁查詢sql語句: SELECT * FROM?? (?? SELECT A.*, ROWNUM RN?? FROM (SELECT * FROM?table_name) A?? WHERE ROWNUM <= ${page}*${amount}?? )?? WHERE RN >= ((${page}-1)*${amount})+1 2、查詢總頁數(shù)sql語句: SELECT ceil(count(*)/${amount}) as totalpage FROM?table_name 注意:如果需要添加where條件,一定兩條語句同時添加 五、面板設計 關于查詢面板設計,不多做說明。多sheet切換時改變面板顯示的功能在 (三).4 中的‘加載結(jié)束’事件的js代碼中有說明。自行理解應用。轉(zhuǎn)載于:https://www.cnblogs.com/zhiji8023/p/11153271.html
總結(jié)
以上是生活随笔為你收集整理的帆软报表(多sheet)自定义分页查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决element el-paginat
- 下一篇: 结对项目——最大子数组