JQGrid программно выбирает строку сетки
У меня есть JQGrid с loadonce:true(так что это все на стороне клиента) и включенным подкачкой (скажем, 20 страниц).
Я хотел бы указать строку (программно, без ввода данных пользователем) и чтобы моя сетка переместилась на соответствующую страницу, чтобы выбрать указанную строку.
Это возможно с текущей JQGrid?
Я посмотрел на поиск и фильтр, но это просто перезагружает сетку с новыми строками - мне нужна моя сетка для перехода на правильную страницу - Сохранение ее данных и структуры.
Я нахожусь в процессе оптимизации своей структуры сетки, поэтому любые необходимые изменения (скажем, на стороне клиента на стороне сервера) были бы возможны.
1 ответ
Потому что вы используете 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.