Как читать userData в jqgrid?

Мне нужно пройти userData в jqgrid, но не могу найти примеры того, как это сделать. Вот моя попытка:

Отправлено с сервера:

{ total: 25,
  page: currentpage,
  userData: {foo: 'bar'},
  rows: myRows }

и в jqgrid:

var data = jQuery("#grid").getGridParam('userData');

Как я могу отправить userData и читать это из jqgrid?

РЕДАКТИРОВАТЬ: я знаю, мой userData отправляется, потому что я вижу это в Fiddler. Я думаю, что я просто застрял на том, как читать это на стороне клиента.

2 ответа

Решение

В общем использование userData это довольно просто. jqGrid поддерживает отправку с сервера любых дополнительных данных, которые будут сохранены вместе с данными jqGrid. Так что, если jqGrid анализирует данные, возвращенные с сервера, он просто ищет userdata (не для userData!!!) а save есть во внутреннем параметре userData,

{ "total":25,
  "page":1
  "records":107,
  "userdata": {"foo": "bar"},
  "rows": [...] }

Будьте осторожны: свойство по умолчанию во входных данных должно быть userdata и НЕ userData как у вас сейчас. Вы можете перезаписать имя по умолчанию для свойства ввода jsonReader: {userdata: "userData"} или же jsonReader: {userdata: "myData"} если вы используете userData или же myData как имя свойства с вашими дополнительными данными.

Один из стандартного использования userData для отображения нижнего колонтитула в jqGrid. Вы можете использовать данные для любых других ваших предложений. В другом ответе показано, как использовать userData выбрать несколько строк / строк непосредственно после загрузки данных с сервера.

Если вы используете loadonce:true параметр, использование userData будет немного сложнее, потому что после первой загрузки данных из параметра userData будет удален, поэтому вы должны сохранить его во внешнем объекте.

Конечно, вы можете получить доступ к userData в отношении jQuery("#grid").getGridParam('userData') только после загрузки данных. Так что вы должны сделать это внутри дескриптора события loadComplete или позже. Кстати, внутри дескриптора события loadComplete вы можете получить доступ ко всем данным, которые отправляются вам с сервера через data параметр события loadComplete. Таким образом, вы можете прочитать любые другие дополнительные данные и сохранить там где-нибудь.

jqGrid по умолчанию принимает JSON в этом формате.

{"rows":
    [{"foo":"bar"}]
}

и установив параметры jqgrid, вы сделаете что-то вроде этого:

$("#cashflow-sheet").jqGrid({
    url:'bbc-json.html',
    datatype: "json",
        ...
Другие вопросы по тегам