Пользовательская фильтрация jqGrid со встроенной панелью фильтрации - PullRequest
2 голосов
/ 26 августа 2011

Я использую последнюю версию jqGrid, и мне интересно, возможно ли выполнить локальную фильтрацию с пользовательскими правилами (см. Пример ниже).Прежде всего, панель инструментов фильтра можно включить, применив

jQuery("#grid").jqGrid('filterToolbar', options);

В прошлом я реализовывал это вручную (версия, которую я сейчас использую, не поддерживает локальную фильтрацию, поэтому я добавилэта функция в соответствии с моими потребностями) и теперь, после обновления до последней версии, я спросил себя, предлагает ли jqGrid эту функциональность по умолчанию (не локальная фильтрация, а настраиваемые правила фильтрации), поскольку функциональность значительно возросла по сравнению споследние месяцыЯ прочитал документацию и искал в интернете, но не нашел подходящего примера.

Вот пример того, чего я хочу достичь.

Есть столбец First Name, который содержит первыйФИО отображаемых лиц.

Stefan
Stephan
Stephano
Stelios
Philip
Phillip
Philipp
Ivan
Iwan
...

Теперь пользователь вводит Ste в панели фильтрации для столбца First Name, и результат с алгоритмом фильтрации по умолчанию должен быть следующим:)

Stefan
Stephan
Stephano
Stelios

Пока все хорошо,Но что, если я хочу отобразить имена, которые схожи по орфографии?Я хочу, чтобы пользователь вводил Ste*an*, чтобы отображалось только

Stefan
Stephan
Stephano

Итак, вы видите, * обозначает подстановочный знак для любого символа ноль или более раз.Кроме того, я хочу, чтобы пользователь мог вводить Ste?an*, в результате чего

Stefan

, где ? означает любой символ ровно один раз.Последнее требование - сделать фильтрацию более терпимой и сопоставлять не только линию отверстия (начальную и конечную, эквивалентную регулярным выражениям), но и сопоставлять значение столбца, если оно содержит введенный текст, то есть e*o соответствие

Stephano
Stelios

Если бы вы могли дать мне подсказку с подстановочным знаком *, другие проблемы должны решить сами.

Заранее спасибо

Кай

1 Ответ

3 голосов
/ 26 августа 2011

В моих старых ответах здесь и здесь Я описал, как можно реализовать пользовательскую фильтрацию.

Если вы в наберите демо , например, «ev» в фильтре для столбца «Клиент», вы увидите следующее:

enter image description here

Вы можете легко изменить демо, чтобы сделать, например, «Stephan» и «Stefan» эквивалентными.

Лично я в основном использую defaultSearch: 'cn' в опциях filterToolbar. Вместе с использованием ignoreCase: true это означает очень хороший пользовательский опыт. По моему личному мнению, такая фильтрация достаточно хороша. Более продвинутый пользователь может использовать расширенный поиск для создания фильтра, например, «начинаются с» «Ste» и «содержит» «an» вместо Ste*an*.

Тем не менее, вы можете использовать идею из моего старого демо , чтобы перезаписать некоторые методы внутреннего поиска , используемые jqGrid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...