Пользовательское форматирование в jqGrid

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

Следующая статья — «Настройки поиска в jqGrid».
Предыдущая статья — «Предопределённое форматирование в jqGrid».

Вы можете определить свой собственный способ форматирования для колонки. Обычно это функция. При установке в свойство formatter она должна быть без кавычек и без фигурных скобок. Пример:

Определение и параметры

В пользовательскую функцию форматирования передаются следующие параметры:

Функция должна всегда возвращать значение, чтобы таблица корректно функционировала.

  • cellvalue — это значение, которое нужно отформатировать
  • options — это объект, содержащий следующие элементы:
    • options : { rowId: rid, colModel: cm}  , где rowId — это id строки, colModel — свойства колонки из colModel.
  • rowObject — это строка в формате, определённом в свойстве datatype.  Если мы имеем datatype: xml/xmlstring , то rowObject будет узлом xml, предоставленным правилами из xmlReader. Если мы имеем datatype: json/jsonstring — объект rowObject будет в соответствии с правилами в jsonReader.

Обратное форматирование

Как упоминалось в статье «Предопределённое форматирование в jqGrid», все предопределённые типы совместимы с модулями редактирования. Это означает, что числа, ссылки, e-mail-ы и т. д. будут сконвертированы так, что будут редактироваться корректно. Также методы (вроде getRowData и getCell), которые получают данные, используют unformat для получения исходного значения. Вопрос в этом: Что если мы используем пользовательское форматирование и хотим получить обратно исходное значение  при использовании редактирования или методов getRowData и getCell?

Ответ: Мы должны использовать свою собственную функцию unformat для этого. Эта функция определяется в colModel.

Показывает картинку и редактирует путь к картинке:

В функцию unformat передаются следующие параметры:

  • cellvalue — значение для обратного форматирования (текст).
  • options —  это объект, содержащий элемент:
    • options : { rowId: rid, colModel: cm} , где rowId — это id строки, colModel — объект настроек из colModel.
  • cellobject — это объект ячейки jQuery. Этот объект может использоваться для получения разных свойств из элементы ячейки. Например, jQuery(cellobject).html() может использоваться для получения содержимого HTML вместо текста.

Пример

Ниже мы симулируем частный случай форматирования денежного значения с помощью функций format и unformat:

Если в таблицу будет вставлено или обновлено значение 123.00, то это будет отображено так: «$123.00». При использовании методов getRowData или getCell или модулей редактирования значение для колонки будет 123.00.

Определение глобальной функции форматирования

В некоторых случаях вам захочется использовать свои функции format/unformat в нескольких местах кода. Для этого, конечно, можно объявить функции как в примере выше. Модуль форматирования jqGrid легко расширяется. Ниже мы рассмотрим, как сделать пользовательские функции форматирования видимыми для всего кода.

После загрузки Javascript-файлов jqGrid вы можете объявить тег script так: (или просто создайте свой файл и включите его в заголовок страницы)

Затем в коде нужно будет просто:

В этом случае вам нужно также объявить и функцию обратного форматирования unformat.

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

Следующая статья — «Настройки поиска в jqGrid».
Предыдущая статья — «Предопределённое форматирование в jqGrid».

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

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