XML-данные в jqGrid

Цикл статей «Документация jqGrid на русском».

Следующая статья — «Строка с XML в jqGrid».
Предыдущая статья — «Манипуляция данными в jqGrid».

Как упоминалось выше, если мы не указываем datatype и xmlReader в свойствах, то таблица ожидает XML-данные, и структура этих данных описана в статье «Манипуляция данными в jqGrid». Но что, если мы не можем менять ответ сервера? Решение этой проблемы  — это xmlReader с некоторыми дополнениями в colModel. Здесь короткое описание xmlReader.

Важное замечание: Правила доступа к элементу из XML те же, что и в библиотеке jQuery, или в CSS-шаблонах. Для получения большей информации обратитесь к http://www.w3.org/TR/REC-CSS2/selector.html.

Начиная с версии 4.3 jqGrid может читать любые атрибуты из XML-ответа.  Более того, теги могут быть функциями.

Все свойства в xmlReader будут объяснены в примерах. Это будет более понятно, чем сухое описание.

  • root (Корневой элемент)

Первое свойство здесь описывает корневой элемент. Это описывает место, где наши данные начинаются и все остальные циклы начинаются с этого элемента. Например,

Если мы установим корневой элемент в "result" , то вся обработка данных будет начинаться от него. В этом случае, так как все наши строки в тегах <row> и наши ячейки в тегах <cell>, нам нужно указать только:

Следующий элемент:

  • row

Он описывает конкретную строку.  Элемент row должен быть дочерним к элементу root (корневому). Например, если XML выглядит так:

то свойство нужно установить в:

  • page
  • total и
  • records

элементы описывают информацию для постраничной навигации. Эти элементы могут быть, но не обязательно, дочерними элементами к корневому элементу (root). Например, чтобы разобрать данные:

то xmlReader должен выглядеть так:

Элементы repeatitems и cell говорят jqGrid, что информация описана в повторяемых тегах, то есть элементы имеют тот же тег, что описан в элементе cell. Например,

xmlReader будет выглядет так:

Следующий элемент

  • id

Если repeatitems установлено в true, и свойство key в colModel установлено в false, то id, если присутствует в XML-данных, должен быть атрибутом элемента row. Пример:

в этом случае xmlReader будет таким:

Предположим, что структура, возвращённая сервером, имеет следующий формат:

где тег <asin> содержит уникальный id, и он должен быть установлен в качестве идентификатора строка в таблице и не должен показываться пользователю. Следуя правилам, мы можем описать следующее:

и наш colModel из примера будет выглядеть так:

Мы можем использовать другой трюк. Если имена в colModel важны для нас, то мы можем сделать следующее:

Другими словами, jqGrid сначала смотрит свойство xmlmap, если его нет, то свойство name используется вместо xmlmap.  Но всё это верно только когда repeatitems в xmlReader установлено в false.

Свойство subgrid включено в несколько примеров xmlReader выше. Правила для него те же, что описаны выше. Больше информации про подтаблицы можно найти в разделе «Подтаблицы (Subgrid) в jqGrid».

Новые английские слова:

moreover [mɔːˈrəʊvə] — кроме того, более того

Цикл статей «Документация jqGrid на русском».

Следующая статья — «Строка с XML в jqGrid».
Предыдущая статья — «Манипуляция данными в jqGrid».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *