2016-07-27 3 views
0

В настоящее время у меня указан этот параметр поиска столбца jqGrid;Параметры поиска jqGrid для значения NOT

colDefs.Append(",stype: 'select', searchoptions: { sopt: ['eq', 'ne'], value: ':All;99:Yes;1:No'}"); 

Поэтому он правильно фильтрует значение 99 для опции поиска «Да» и значение 1 для «Нет».

Как я могу сделать фильтр для чего угодно, кроме 99 (т. Е. НЕ 99) для «Нет» вместо 1?

Я попробовал несколько предположений, как ...; 99:.. Нет "}», но они просто ошибка

Пользователей не могут или не должны выбирать между Равно/Не равен или любым другим вариантом фильтрации, и только «выбрать» из трех фиксированных опций «Все», «Да» или «Нет».

В настоящее время «Все» показывает все записи, «Да» показывает только записи со значением «99» (данные строка), «Нет» показывает только записи со значением «1».

Что я стремлюсь для ' Все должны показать все записи, «Да» должны показывать только записи со значением «99», а «Нет» должны показывать все записи, где значение НЕ «99». Могу ли я определить 'searchoptions' для этого?

Тип данных ячейки - строка.

FilterToolbar определяется

$('#' + this.instance + '_GridContainer_grid').jqGrid('filterToolbar', { 
    stringResult: true, 
    defaultSearch: 'cn' 
}); 

фильтрация является локальным, а не сервер.

Спасибо!

+0

Извините, но это совершенно неясно, что вы делаете. Утверждение 'colDefs.Append (...)' может быть неправильным или правильным, зависит от контекста. jqGrid - это чистый ** JavaScript ** продукт. Вы должны включить код JavaScript, чтобы предотвратить недоразумение. Вы пишете «Я делаю фильтр». Что ты имеешь в виду? Используете ли вы Search Dialog, filterToolbar или вы устанавливаете фильтр внутри 'postData' напрямую? Какой тип данных вы используете? Вы фильтруете * локально * или на сервере? Какую версию jqGrid вы используете и из какой вики jqGrid (бесплатный jqGrid, коммерческий Guriddo jqGrid JS или старый jqGrid в версии <= 4.7)? – Oleg

+0

Код colDefs верен; это происходит из живой системы со многими рабочими сетками.Извините за путаницу фильтра; в этой системе параметры поиска определяют фильтрацию столбцов, так что в этом случае в раскрывающемся меню «Все, да, нет» находится строка «Все, да, нет» внизу строки заголовка. Выбор из раскрывающегося списка фильтрует результаты на основе критериев поиска, определенных в коде searchoptions. Я унаследовал это, поэтому не стреляйте в меня! Я надеюсь получить некоторое представление о работе «sopt» и (я думаю), как определить отдельные правила «ne» и «eq» для столбца. Версия 4.6.0. – AnotherFineMess

+0

** Какой тип данных вы используете? Вы фильтруете локально или на сервере? ** Трудно следовать за вами, если вы не разместите соответствующий код JavaScript. Я попытаюсь объяснить коротко. Кажется, что вы используете метод filterToolbar для создания [панели инструментов фильтра] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:toolbar_searching). ** Какие опции 'filterToolbar' вы используете? ** Например, опция' searchOperators: true' позволяет пользователю выбирать операцию фильтрации (не равную). Вам нужно установить фильтр * вашей программой * или у пользователя должна быть возможность выбрать операцию 'ne'? – Oleg

ответ

0

Если вы filterToolbarбезsearchOperators: true вариант, то будет использоваться первый поиск работы от sopt. Вы можете изменить sopt: ['eq', 'ne'] на sopt: ['ne'] или на sopt: ['ne', 'eq'], чтобы применить операцию «не равно» в столбце.

Причина таких настроек следующая. searchoptions будет использоваться как панелью инструментов фильтра, так и диалогом поиска (см. here и here). Если в колонке нет searchoptions.sopt, то для для всех столбцов применяется операция поиска defaultSearch (используется как опция filterToolbar). Если вы будете использовать select со значениями 1,2, ... 11,12,13, ... тогда поиск значения '1' отобразит строки со значениями 1, 11, 12, 13, ... потому что все значения содержит подстрока '1'. Таким образом, каждый определяет searchoptions.sopt, если используется stype: 'select'.

+0

Я думаю, что понимаю, как определить sopt ['eq'] для соответствия определенному [значению] сейчас. Но в том же раскрывающемся списке filterToolbar я хочу, чтобы опция «все, кроме [значение]», была отфильтрована. Возможно ли это, возможно, с совершенно другим механизмом, чем searchOperators? – AnotherFineMess

+0

@ Еще одна проблема: я не понимаю проблему. Попробуйте '{sopt: ['ne', 'eq'], value: ': All; 99: not 99; 1: Not 1'}" '. Вы можете реализовать * любую пользовательскую операцию *, обновив до [free jqGrid] (https://github.com/free-jqgrid/jqGrid) 4.13.4, форвард jqGrid, который я разрабатываю. См. [статья wiki] (https://github.com/free-jqgrid/jqGrid/wiki/Custom-filtering-search-Operation), [ответ] (http://stackoverflow.com/a/28615923/315935), [этот] (http://stackoverflow.com/a/29415927/315935), [этот] (http://stackoverflow.com/a/29676941/315935) или [этот] (http://stackoverflow.com/a/37262509/315935). – Oleg

Смежные вопросы