2015-09-23 44 views
0

我想添加到BIRT表和交叉控制以下功能對數據進行排序:當我點擊一個特定的列標題,數據獲得根據分類以升序或降序排列。用頭在客戶端(通過JavaScript)

我發現this trick使用參數在服務器端對數據進行排序,但我不希望工作在服務器端排序。不過,我想在客戶端最好用JavaScript來完成它。

請提供任何提示?

回答

0

通常我爲此嵌入Datatables。它很簡單,功能強大,它有一個很好的文檔。

您可以訪問BIRT table with Datatable here的現場演示。如您所見,所有鑽取的超鏈接操作和樣式都保持不變。

基本上,我們需要在報告的末尾添加HTML文本,使用「head.js」設定在腳本標籤類型爲「HTML」和負載jQuery和數據表。例如:

<script> 

head.load("//cdn.datatables.net/1.10.9/css/jquery.dataTables.min.css","//cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js",function(){ 
    console.log("DataTables framework loaded..."); 
    $("#myTableID").DataTable(); //"myTableID" should be the bookmark of the table 
    console.log("Interactive table is ready!"); 
}); 

</script> 

enter image description here

使用BIRT書籤屬性設置一個ID表。請注意,如果您的BIRT發射器不在HTML表格中生成「thead」標記(只需檢查html輸出以查看是否生成了標記標記),則需要通過腳本修復它:將第一行移到「在調用「DataTable()」函數之前,使用jquery將「tbody」轉換爲「thead」標籤。確實,它需要一點點的JavaScript知識,但正如你所看到的那樣,這將非常值得!

+0

感謝您的回答,但我想知道更多關於您已發佈的代碼,請問我是否在之前將其複製並粘貼到報告的xml部分?無論如何,這不適合我..任何提示,我可以把它放在哪裏? – Dhoha

+0

我還有其他問題:我應該在head.js文件中寫什麼?我怎麼知道我的BIRT發射器是否產生了thead?請提供任何提示? – Dhoha

+0

此代碼必須放入表格後插入的BIRT文本元素,並將其類型設置爲「HTML」。我編輯了答案來添加屏幕截圖。此外,它看起來「head.load」更適合多個JS依賴項。 – Dominique