Я подготовил для вас небольшую демонстрацию , которая сохраняет выбор строки.В демоверсии я переписал код selectionPreserver , используемый в случае использования reloadGrid с дополнительными параметрами: $("#list").trigger("reloadGrid", [{current:true}]);
.Подробнее см. ответ .
Демонстрация сохраняет текущий выбор внутри обработчика событий onSortCol
и восстанавливает его внутри loadComplete
:
onSortCol: function () {
saveSelection.call(this);
},
loadComplete: function () {
restoreSelection.call(this);
}
Как вы видите использование очень просто, и вы можете интегрировать его в свой код.Реализация saveSelection
и restoreSelection
выглядит следующим образом:
var lastSelArrRow = [],
lastScrollLeft = 0,
lastSelRow = null,
saveSelection = function () {
var $grid = $(this);
lastSelRow = $grid.jqGrid('getGridParam', 'selrow');
lastSelArrRow = $grid.jqGrid('getGridParam', 'selrow');
lastSelArrRow = lastSelArrRow ? $.makeArray(lastSelArrRow) : null;
lastScrollLeft = this.grid.bDiv.scrollLeft;
},
restoreSelection = function () {
var p = this.p,
$grid = $(this);
p.selrow = null;
p.selarrrow = [];
if (p.multiselect && lastSelArrRow && lastSelArrRow.length > 0) {
for (i = 0; i < lastSelArrRow.length; i++) {
if (lastSelArrRow[i] !== lastSelRow) {
$grid.jqGrid("setSelection", lastSelArrRow[i], false);
}
}
lastSelArrRow = [];
}
if (lastSelRow) {
$grid.jqGrid("setSelection", lastSelRow, false);
lastSelRow = null;
}
this.grid.bDiv.scrollLeft = lastScrollLeft;
};