2013-02-25 3 views
0

Я пытался использовать remapColumns:JQGrid колонны реорганизовать

grid.remapColumns(newOrder, false, false); 

но получила странный вопрос - заголовки столбцов были заказаны, но информация о колонках остались нетронутой. Как это можно решить?

EDIT:

Всего 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

+0

Информация о столбцах - это содержимое столбца. 'newOrder' имеет ту же длину, что и 'colModel', см. EDIT – skayred

+0

, какую версию jqGrid вы используете? Я не знаю 'updateColumns'. Теперь он не существует в jqGrid. Более того, я до сих пор не понимаю, какая у вас проблема. Что такое «содержимое столбца»? Вы имеете в виду заголовки столбцов столбцов сетки? Когда и где вы вызываете функцию 'permutateGrid' (например, в пустой сетке, внутри некоторого обратного вызова и т. Д.) – Oleg

ответ

1

Второй параметр remapColumns должен быть true, если вы хотите обновить содержимое сетки. Типичное использование remapColumns составляет grid.jqGrid("remapColumns", newOrder, true, true); (или grid.remapColumns(newOrder, true);).

+0

Является ли этот подход подходящим для сетки с субгридами? – skayred

+0

Моя проблема заключалась в следующем: я попытался переназначить весь столбец, включая 'subgrid', но он должен оставаться на индексе' 0' – skayred

+0

@skayred: я бы рекомендовал вам включить скриншоты в следующий раз. Это прояснит многие вещи. Кроме того, в большинстве случаев требуется более полный код JavaScript с параметрами jqGrid. – Oleg