2013-02-25 193 views
0

我試着使用remapColumnsjqGrid的列重新排序

grid.remapColumns(newOrder, false, false); 

,但有一個奇怪的問題 - 列標題被重新排序,但列的相關信息留不變。如何解決這個問題?

編輯:

全mthod

permutateGrid: function (gridID, columnsToShow, columnsToHide) { 
    var newOrder = []; 
    var grid = $(gridID); 

    for (var i = 0; i < columnsToShow.length; i++) { 
     newOrder.push(GridHelpers.getColumnSrcIndexByName(grid, columnsToShow[i])); 
    } 

    var columnsCount = grid.jqGrid("getGridParam", "colModel").length; 
    for (var i = 0; i < columnsCount; i++) { 
     if (newOrder.indexOf(i) === -1) { 
      newOrder.push(i); 
     } 
    } 

    showColumns(gridID, columnsToShow); 
    hideColumns(gridID, columnsToHide); 

    grid.jqGrid('remapColumns', newOrder, false, false); 
    grid[0].jqGrid().updateColumns(); 
}, 
+0

你在「列信息」下的含義是什麼?究竟是什麼錯誤?你使用'newOrder'數組的長度與colModel相同嗎? – Oleg 2013-02-25 07:40:16

+0

列信息是列內容。 'newOrder'與'colModel'長度相同,請參閱EDIT – skayred 2013-02-25 07:43:04

+0

您使用的是哪個版本的jqGrid?我不知道'updateColumns'。它現在不存在於jqGrid中。此外,我仍然不明白你有什麼問題。什麼是「欄目內容」?你的意思是網格列的列標題?何時何地調用'permutateGrid'函數(例如,在空網格中,某些回調函數內部) – Oleg 2013-02-25 07:54:43

回答

1

remapColumns第二個參數應該是true如果要更新電網的內容。 remapColumns的典型用法是grid.jqGrid("remapColumns", newOrder, true, true);(或grid.remapColumns(newOrder, true);)。

+0

這種方法適合具有子網格的網格嗎? – skayred 2013-02-25 08:21:41

+0

我的問題在於 - 我嘗試重新映射包括子網格在內的所有列 - 但它必須留在'0'索引 – skayred 2013-02-25 08:31:33

+0

@skayred:我建議您下次包含screenshort。它會清除很多事情。另外在大多數情況下,需要使用jqGrid參數的更完整的JavaScript代碼。 – Oleg 2013-02-25 08:41:23