Restore hidden
Состояние всех столбцов очень простое, и вы нашли уже соответствующие примеры кода. Таким образом, я отвечаю, как сбросить порядок столбцов.
Проблема заключается в том, что метод remapColumns
, который может использоваться для изменения порядка столбцов, использует номера столбцов вместо имен столбцов. Такая же проблема существует во многих других методах или внутренних параметрах jqGrid. Чтобы использовать метод remapColumns
, вам необходимо использовать индекс столбцов на основе текущего порядка. После того, как пользователь несколько раз изменил порядок столбцов, было бы трудно предоставить номера столбцов, которые вы хотите иметь относительно текущего порядка столбцов. Было бы намного проще удерживать имена столбцов вместо индексов столбцов.
Я разработал free jqGrid как вилку jqGrid после того, как Тони изменил лицензионное соглашение jqGrid и переименовал его в Guriddo jqGrid JS. Я внедрил много изменений в jqGrid, что мешает мне и реализовало много новых функций. Один из изменений заключался в перемещении всех внутренних опций на сохранение имен вместо индексов, насколько это было возможно, без нарушения совместимости с предыдущими версиями. Я добавил метод remapColumnsByName
, что упрощает использование переупорядочения столбцов (см. the answer с the demo).
Реализация ваших требований в бесплатном jqGrid может быть очень простой. Вам нужно просто сохранить исходный порядок столбцов в массиве, а затем использовать его в качестве параметра remapColumnsByName
сбросить столбцы
$("#grid1").jqGrid({
...
onInitGrid: function() {
var p = $(this).jqGrid("getGridParam");
// save names of columns in custom option of jqGrid
p.originalColumnOrder = $.map(p.colModel, function (cm) {
return cm.name;
});
//alert(JSON.stringify(p.originalColumnOrder));
}
}).jqGrid("navGrid", { add: false, edit: false, del: false })
.jqGrid("navButtonAdd", {
buttonicon: "fa-repeat",
caption: "",
title: "Reset original column order",
onClickButton: function() {
var $self = $(this), p = $self.jqGrid("getGridParam");
$self.jqGrid("remapColumnsByName", p.originalColumnOrder, true);
}});
Смотреть демо https://jsfiddle.net/OlegKi/r6b2os5b/2/
Если вы не можете перенести, чтобы освободить jqGrid из-за некоторые причины, то вы должны моделировать то же поведение. Вы должны сохранить исходный порядок столбцов как массив имен столбцов, а затем преобразовать имена в индексы непосредственно перед вызовом remapColumns
. Он тоже должен работать.
Я думаю, что это демо должно быть полезным. http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithSetColumn.htm –
Да, используя тот же пример в демонстрации, я могу получить все столбцы. Однако я не могу изменить порядок столбцов в исходное состояние. В Demo нет переупорядочения столбцов –
вы можете сохранить colModel в переменной, а затем, когда вы захотите вернуться к исходному состоянию, просто используйте данные colModel –