jqGrid的列重新排序

问题描述:

我试着使用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

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