使用帆软finereport实现跳转的一点心得
最近單位在用帆軟做快速開發,我雖然比較熟悉JavaScript和HTML,自己從零開始造輪子效果可能更好,但是畢竟局里想要使用這個,又是團隊項目,自然是能省事就省事一點,有得用就用吧,年紀大了,我也就懶得自己造輪子了。
情人節那天跟我出來喝茶的女孩,我還送了她輕松熊的,正月初七就換了不知道和誰的情侶頭像,初六晚上還和別人去看那部電影《你好,李煥英》,不要問我為什么知道這件事,我是個早就被傷害到千瘡百孔的人,我真的是麻木了,徹底的麻木了,想起以前大學第一次表白被拒那會兒我傷心了兩年,而現在,我傷心不到兩個小時……我不得不變得越來越鐵石心腸以防止這個世界一次又一次的對我的傷害。
下面言歸正傳:
最近需要使用帆軟批量給一些單元格設置條件屬性。帆軟的條件屬性要批量設置是比較麻煩的,它沒有條件屬性的格式刷,所以,比如說,你想對一大堆的單元格設置諸如大于0就變綠小于0就變紅這樣的條件屬性,是沒有辦法先設置好一個再用類似格式刷的東西去刷向另一格的,這就很坑爹了。當然,麻煩歸麻煩,也不是就無解,目前有兩個解決方法(我通常用的是第一個)。第一個方法是按住ctrl鍵,把你要設置的單元格全部點上,再一次性設置條件屬性。這樣吧,如果你的表格比較小倒是還好,表格超過一個畫面的話還是要多次操作,沒辦法。第二個方法就不贅述了,就是使用JavaScript在執行加載結束事件(如何在頁面加載結束時執行某個js事件請參考我的前面發的另一篇博客)
然后就是跳轉了,有時候,比如你有好幾個部門,像銷售部、研發部、人事部等等,有個總表,要在總表上增加點擊功能,然后跳轉到另一個頁面去看各個部門的明細,那么,最簡單的方法就是在finereport里面設置網絡報表,然后自定義一大堆的參數,然后實現跳轉,但是,這種東西對于比較簡單的報表是沒問題的,如果你要實現的可跳轉的按鈕過多,那么這種給每個可跳轉單元格配置自定義參數的工作量會極其可怕,而且日后要修改也非常非常不方便。
比如說,有個表,有上面三個部門分別的十二個月的活動支出明細,手工加跳轉要配置得很累很吐血,這個時候如果用js的話就是弄個數組然后for循環的事,而且后期維護起來就簡單多了。
用js實現自定義傳參,我們知道,js的一句window.open('http://www.baidu.com')就可以實現跳轉了。
然后,已知帆軟的網址的格式都是 http://你的服務器地址:端口/webroot/decision/view/report?viewlet=/某個文件夾/某個文件.cpt&__parameters__={"__pi__":true,"你的名字":"哈哈哈"}&_=1613983982000
"你的名字":"哈哈哈" 這個就是自定義參數名稱和參數的值了,如果要多個就一起添加進去就可以了,用英文的逗號隔開,其實就是個json格式。
而__parameter__后面的?&_=1613983982000 則是時間戳,用js獲取當前時間戳是很簡單的,就是 Date.parse(new Date())
如果要獲取finereport控件的值,則是: var aaa = contentPane.parameterEl.getWidgetByName("某個控件的名稱").getValue() 比如獲取某個時間,或者某個文本框里面的值等。
通過這樣,拼湊一個地址出來即可用window.open()函數實現自定義跳轉了。
由于是通過js的,所以可以很容易的給橫豎的多個按鈕批量添加或綁定跳轉事件。
finereport的網絡報表地址會對網址進行兩層的encodeURI()加密,所以在網址那里加上兩層的encodeURI(encodeURI(url))即可模擬得像模像樣了。
我是直接將window.open(encodeURI(encodeURI(url)))嵌在網頁上,有時可能怕泄密,則可以用js進行事件綁定,或者對url的內容進行進一步的加密,再去寫一個解密處理函數,再將代碼進行壓縮混淆等等。不過,一般來講沒必要搞得太復雜,因為大部分用戶其實根本不懂你的代碼……
為了讓自己套js的單元格更加像模像樣一點,還可以添加鼠標事件,比如讓鼠標移入的時候就改變鼠標樣式變成那個食指朝上的預點擊圖標,鼠標移出就變回原來的圖標。
這個很簡單,就是div.style.cursor='pointer' 和 div.style.cursor='default'
由于單位的項目保密原因,這次就不貼出源碼了,但是因為很簡單,而且也已經說得很詳細了,相信有需要的朋友只要仔細看然后慢慢弄就可以了。
就到這里。
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的使用帆软finereport实现跳转的一点心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用技嘉Windows Image Too
- 下一篇: python连接阿里云odps