Поскольку вы используете loadonce:true
, вы подготавливаете данные на сервере. На стороне сервера вы можете решить, какая строка должна быть выбрана. На стороне сервера вы также можете легко рассчитать, на какой странице будет выбранная строка. Например, идентификатор выбранной строки и выбранной страницы можно включить как часть пользовательских данных . Таким образом, данные, отправленные с сервера, могут выглядеть следующим образом:
{
"total": 5,
"page": 1,
"records": 107,
"rows": [
...
],
"userdata": {
"page": 3,
"selId": 24
}
}
Внутри loadComplete
вы можете сделать следующее
loadComplete: function(data) {
if (jQuery("#list").getGridParam('datatype') === "json") {
// data.userdata is the same as jQuery("#list").getGridParam('userData');
var userdata = jQuery("#list").getGridParam('userData');
var curPage = jQuery("#list").getGridParam('page'); // is always 1
if (curPage !== userdata.page) {
setTimeout(function(){
jQuery("#list").setGridParam(
{ page: userdata.page }).trigger("reloadGrid");
jQuery("#list").setSelection (userdata.selId, true);
},100);
}
else {
jQuery("#list").setSelection (userdata.selId, true);
}
}
}
Рабочие примеры, которые вы можете увидеть на http://www.ok -soft-gmbh.com / jqGrid / DataToSelect.htm и http://www.ok -soft-gmbh.com / jqGrid / DataToMultiSelect.htm .
ОБНОВЛЕНИЕ : Бесплатно jqGrid поддерживает опцию multiPageSelection:true
, распространяющуюся с версией 4.10.0. Опция позволяет очень легко установить выделение нескольких строк в сетке (и работает очень быстро, потому что она устанавливает состояние выделения непосредственно при создании тела сетки). См. ответ и демо и readme для 4.10.0 .