報表,除了相對靜態(tài)地展現(xiàn)匯總統(tǒng)計數(shù)據(jù)以及分布、趨勢等數(shù)據(jù)內(nèi)容外,也可以用于顯示和時間相關(guān)的即時信息,包括實時顯示時間。例如,下面這個設(shè)備監(jiān)控應(yīng)用統(tǒng)系中,首頁除了顯示實時監(jiān)控數(shù)據(jù)外,還需要在右上角顯示實時時間:
創(chuàng)新互聯(lián)于2013年成立,先為裕安等服務(wù)建站,裕安等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為裕安企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
這種形式的“動態(tài)報表”其實在我們生活中也隨處可見,最常見的就是火車站大屏幕上的列車時刻表,上面顯示的當前時間,讓旅客能夠一目了然地知道自己的列車還有多長時間開,等待的列車什么時候到。
其實,要在報表中做到上面的效果很簡單,基本思路就是讓頁面定時(比如每隔一秒鐘)調(diào)用JS方法,在JS中通過單元格的ID獲取到顯示時間的那個格子,將當前時間作為這個格子的新值顯示就可以了。
下面,我們就具體看看如何通過潤乾報表實現(xiàn)這樣司空見慣的動態(tài)顯示時間效果。
前面第一個圖是在潤乾報表設(shè)計器自帶的報表“設(shè)備故障分析.rpx”的基礎(chǔ)上實現(xiàn)的,接下來我們就用這個報表作為例子進行說明。我們首先在自帶報表中添加時間,合并N4、O4單元格,并在該合并格中設(shè)置單元格表達式=string(now(),”yyyy年MM月dd日 hh:MM:ss”)。
然后,我們打開報表展現(xiàn)頁面showReport.jsp,在這個頁面中設(shè)置標簽屬性generateCellId,以便報表單元格在頁面生成格子的ID。
打開原始的報表展現(xiàn)頁面,我們發(fā)現(xiàn)設(shè)置當前時間的單元格,并沒有生成對應(yīng)的ID,如下圖所示:
為了在JS腳本中能夠通過ID可以獲得到該單元格,以便修改該單元格的值,我們需要在展現(xiàn)的頁面中添加標簽屬性generateCellId=”yes”,如下圖所示:
設(shè)置了該屬性后,我們可以在頁面中可以看到,該單元格生成了對應(yīng)的id值:
接下來,我們在在報表展現(xiàn)的頁面中添加動態(tài)改變單元格值的JS方法myrefresh(),在這個方法中通過單元格的ID動態(tài)改變該單元格中的顯示時間,同時通過setTimeout()在1秒后調(diào)用函數(shù)myrefresh。由于setTimeout()函數(shù)只會被調(diào)用一次,所以我們還需要在myrefresh()函數(shù)體中也加上這個函數(shù),從而達到循環(huán)調(diào)用的效果,下面是具體的JS方法:
function myrefresh()
{
var tbl = document.getElementById( “report1_N12” );
var myDate = new Date();
tbl.innerHTML=myDate.toLocaleString( );
setTimeout(‘myrefresh()’,1000);
}
setTimeout(‘myrefresh()’,1000);
.這樣,經(jīng)過以上的簡單設(shè)置,我們就可以在showReport.jsp頁面中展現(xiàn)“設(shè)備故障分析.rpx”報表,并且在頁面上方看到實時變化的時間了,頁面效果如下:
通過這個簡單的例子,我們知道,就像開篇所說,報表不僅能夠呈現(xiàn)固定的統(tǒng)計匯總數(shù)據(jù),還有相當不錯的動態(tài)展示能力。我們在這里使用的定時調(diào)用JS改變單元格的值的方式,可以實現(xiàn)頁面局部內(nèi)容的動態(tài)變化,而且沒有閃爍刷新,毫無違和感!
怎么樣,意不意外?驚不驚喜?讓我們趕緊擼起袖子利用報表讓數(shù)據(jù)展現(xiàn)更加豐富起來吧!