Как читать 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",
...