Настройки поиска в jqGrid

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

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

Колонки в таблице могут быть использованы в качестве основы для формы поиска над таблицей, под таблицей или вместо таблицы. Поиск — это способ запрашивать данные с сервера, удовлетворяющие заданному условию.

На текущий момент в jqGrid нет модуля для поиска в локальных данных (то есть когда datatype равен «local»). Весь поиск происходит на стороне сервера.

Есть четыре метода:

Эти методы используют общие свойства из jqGrid и поэтому могут быть вызваны только после инициализации jqGrid.

Каждый метод поиска требует наличия некоторого дополнительного модуля.

Все модули поиска (кроме пользовательского и панели поиска) используют следующие объявления в языковом файле:

Свойства colModel

Начиная с версии 3.5, jqGrid использует общие свойства поиска, которые могут быть использованы в каждом методе поиска. Ниже представлен список этих свойств, которые могут быть указаны в colModel. Обратите внимание, что некоторые свойства не применимы к некоторым методам.

Свойство: search
Тип: boolean
Определяет, можно ли искать по значению в этом поле.
По умолчанию: true

Свойство: stype
Тип: string
Определяет тип поиска по полю. Может быть "text" — создаётся элемент ввода с типом text, и "select" — создаётся элемент select.
По умолчанию: "text"

Свойство: searchoptions
Тип: object
Объект, содержащий определение, событие и другие свойства, для фильтруемого поля (по которому ищем). Смотрите ниже.
По умолчанию:

Свойство: searchrules
Тип: object
Объект, содержащий дополнительные условия для проверки пользовательского ввода. Подробнее.
По умолчанию:

searchoptions

searchoptions неприменим к пользовательскому методу поиска. Этот метод использует другие свойства.

Доступные свойства:

Свойство: dataUrl
Тип: string
Это свойство корректно только для элементов с stype равным "select". Свойство содержит url, из которого будет загружаться элемент select. Если это свойство установлено, то элемент будет заполнен значениями из AJAX-запроса. Данные должны быть корректным элементом select с желанными элементами option. Например: <select><option value="1">One</option> <option value="2">Two</option></select>. Запрос выполняется только один раз.

Свойство: buildSelect
Тип: function
Это свойство имеет смысл только в случае, когда установлено свойство dataUrl. В случае когда ответ сервера не может построить элемент select, вы можете использовать свою функцию для построения select. Функция должна вернуть строку, содержащую select и option-ы, как они описаны в свойстве dataUrl. Функция имеет один параметр — ответ сервера.

Свойство: dataInit
Тип: function
Если установлено, то эта функция вызывается только один раз при создании элемента. В эту функцию передаётся объект элемента.
dataInit: function(elem) {do something}
Также используйте эту функцию для присоединения datepicker-а, time picker-а и т. д. Пример:
dataInit : function (elem) {$(elem).datepicker();}

Свойство: dataEvents
Тип: array
Список событий для элемента. Используется $("#id").bind(type, [data], fn) для привязки событий к элементу. Должно быть описано примерно так:
dataEvents: [{ type: 'click', data: { i: 7 }, fn: function(e) { console.log(e.data.i); }},{ type: 'keypress', fn: function(e) { console.log('keypress'); } }]

Свойство: attr
Тип: object
attr — это объект, где мы устанавливаем атрибуты для созданного элемента. Пример:
attr : { title: "Some title" }
Установит атрибут title (всплывающую подсказку) для элемента поиска.

Свойство: searchhidden
Тип: boolean
По умолчанию поиск по скрытым элементам в таблице не происходит. Для того чтобы включить поиск по скрытому элементу, установите это свойство в true.

Свойство: sopt
Тип: array
Это свойство используется только в расширенном поиске, поиске по одному полю и панели поиска и определяет операцию, применяемую к элементу. Если не указано, то все доступные варианты будут использованы. При использовании панели поиска первый элемент будет использован. Все доступные варианты:
['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
Связанные с этим строки находятся в языковом файле и означают следующее:
[‘равно’,’не равно’, ‘меньше’, ‘меньше или равно’,’больше’,’больше или равно’, ‘начинается с’,’не начинается с’,’содержится в’,’не содержится в’,’оканчивается на’,’не оканчивается на’,’содержит’,’не содержит’]
Обратите внимание, что элементы в массиве sopt могут быть перемешаны в любом порядке.

Свойство: defaultValue
Тип: string
Если не пусто, то устанавливает значение по умолчанию для элемента ввода.

Свойство: value
Тип: смешанный
Свойство используется только для stype равного "select" и определяет свойства элемента select в диалоге поиска. Если stype равен "select" и dataUrl не установлено, то значение может быть строкой или объектом.
Если свойство является строкой, то оно должно содержать множество значений «значение:надпись» со значениями, отделёнными от надписей двоеточием и заканчивающимися точкой с запятой (;). Строка НЕ должна заканчиваться на «;». Пример:
editoptions:{value:"1:One;2:Two"}
Если указан объект, то он должен содержать пары «значение:имя»:
editoptions:{value:{1:'One',2:'Two'}}

Свойство: clearSearch
Тип: boolean
При установке в false иконка X в конце поля поиска, позволяющая очистить поле поиска, недоступна. Значение по умолчанию true.

Примечание: если свойство dataUrl в searchoptions не используется в stype "select", то данные для select сначала берутся из свойства value в searchoptions, а если это не указано, то из свойства value в editoptions. Например: editoptions:{value:"1:one;2:two",}. Смотрите ниже как использовать эти опции в различных методах поиска.

Соглашения colModel

searchrules

Добавляет дополнительные свойства в элемент поиска и должно использоваться в colModel. Обычно используется для проверки пользовательского ввода перед отправкой значений на сервер. Синтаксис:

Список доступных свойств:

Свойство: required
Тип: boolean
(true или false). Если установлено в true, то значение будет проверяться на пустоту. Если пусто, то отображается сообщение об ошибке.

Свойство: number
Тип: boolean
(true или false) Если установлено в true, то значение будет проверяться на то, является ли оно числом. Если введено не число, то отображается сообщение об ошибке.

Свойство: integer
Тип: boolean
(true или false) Если установлено в true, то значение будет проверяться на то, является ли оно целым числом. Если оно не является целым числом, то отображается сообщение об ошибке.

Свойство: minValue
Тип: number(integer)
Если указано, то значение проверяется на то, что оно не меньше этого числа. Если оно меньше его, то отображается сообщение об ошибке.

Свойство: maxValue
Тип: number(integer)
Если установлено, то значение проверяется, и если оно больше этого, то выводится сообщение обо ошибке.

Свойство: email
Тип: boolean
Если установлено в true, то значение проверяется, и если оно не является корректным e-mail, то отображается сообщение об ошибке.

Свойство: url
Тип: boolean
Если установлено в true, то значение проверяется, и если оно не является корректным url, то отображается сообщение об ошибке.

Свойство: date
Тип: boolean
Если установлено в true, то берётся значение из свойства datefmt (если не установлено, что используется дата в формате ISO) и значение проверяется на корректность даты. Если оно неверно, то отображается сообщение об ошибке.

Свойство: time
Тип: boolean
Если установлено в true, то значение проверяется на корректность введённого времени. Если оно не является корректным временем, то отображается сообщение об ошибке. На текущий момент поддерживается только формат hh:mm и опционально am/pm в конце.

Свойство: custom
Тип: boolean
Если установлено в true, то разрешает объявление пользовательских правил проверки с помощью пользовательской функции. Смотрите ниже.

Свойство: custom_func
Тип: function
Эта функция должна использоваться при свойстве custom, установленном в true. Параметры этой функции: значение, которое нужно проверить, и имя — свойство из colModel. Функция должна вернуть массив с параметрами: первый — true или false. Значение true означает, что проверка прошла успешно, иначе — false. Второй параметр имеет смысл, только когда первый параметр равен false и содержит сообщение для пользователя. Обычно это выглядит как: [false,"Please enter valid value"]

Свойства searchrules будут использоваться только в диалоге поиска, но не в панели поиска. Смотрите по ссылке [http://stackoverflow.com/a/9011733]

Пример пользовательской проверки

Что вы должны знать

  • Все модули поиска используют свойство url в таблице для осуществления поиска. В некоторых методах есть отдельное свойство url, которое тоже может быть использовано.
  • При осуществлении поиска массив postData заполняется данными, необходимыми для поиска.
  • Свойство search в таблице свойств устанавливается в true, для того чтобы отображать поиск. На сервере имя параметра для этого _search (обратите внимание на различие), который может быть получен с помощью массивов GET и POST.
  • Для поиска мы имеем дополнительный массив searchdata в свойствах таблицы.
  • Когда таблица обновляется с помощью кнопки обновления в навигаторе, свойство search устанавливается в false.
  • Каждый метод поиска создаёт свой собственный метод для очистки данных поиска из массива postData. Используйте эти методы для этого.

 

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

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

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

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