jqgrid 中設置列不排序


背景

今天在做系統的功能時,當時有這么個需求:在添加了一行數據時,原本的排序的自動就不能再排序,也就是排序失效。

1. 使用onSortCol事件禁止排序列

當時使用了初始化時,使用onSortCol事件在初始化的時候,如果發現了添加行的標記為true的情況,就返回“stop”(返回stop之后列排序就失效了)。

然后出現了一個問題,排序功能確實是被禁止掉了,但是排序的上下箭頭還是依然頑強的工作,此種方法帶了操作上的困擾。

2. 單獨禁止掉指定的方法

在網上搜索了一陣之后,jqgrid確實提供了禁止列排序的方法,可以在需要的地方調用。

 1 //disable sorting of grid
 2 var grid = $("# your jqgrid id");
 3  
 4 //get all column names
 5 var columnNames = grid[0].p.colNames;
 6      
 7 //iterate through each and disable
 8 for (i = 0; i < columnNames.length; i++) {
 9    grid.setColProp(columnNames[i], { sortable: false });
10 }

這段代碼,是執行不成功,因為colNames取得是顯示的列名,其實項目中datafield設置的都是其它的名字,在colModel里面就是index的值,所以得如下改法:

 1 //disable sorting of grid
 2 var grid = $("# your jqgrid id");
 3  
 4 //get all column names
 5 var columnNames = grid.jqGrid('getGridParam','colModel');
 6      
 7 //iterate through each and disable
 8 for (i = 0; i < columnNames.length; i++) {
 9    grid.setColProp(columnNames[i].index, { sortable: false });
10 }

以上的代碼的效果:1. 排序功能被禁止。 2. 列頭的排序圖標如果有的話點擊也是不變化的。 

其它代碼片段:

1 var columnNames = grid[0].p.colNames;
2 colNames=$("#UsersGrid").jqGrid('getGridParam','colNames')
3 
4 var columnNames = grid[0].p.colModel;
5 colModel=$("#UsersGrid").jqGrid('getGridParam','colModel')

總結

      jqgrid的特性還是非常棒,在發現問題的時候一般的情況下從jqgrid的設計角度都會有相對應的解決方法的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM