ошибка в jqgrid, только первый поиск показывает выпадающий список - PullRequest
1 голос
/ 19 марта 2011

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

Проблема в том, что все остальные элементы будут по-прежнему отображать текстовые поля. вот картинка:

enter image description here

вы видите, как в первой строке выпадающий список, а в других строках есть текстовые поля. Если бы это работало правильно, все они были бы текстовыми полями. Кроме того, для операции по умолчанию не установлено значение «Равно»

Вот мой код:

При запуске я программно установил несколько фильтров:

var myfilter = { groupOp: "AND", rules: [] };
myfilter.rules.push({ field: "Status", op: "ne", data: "Completed" });
myfilter.rules.push({ field: "Status", op: "ne", data: "On Hold" });
myfilter.rules.push({ field: "Status", op: "ne", data: "Cancelled" });


[a bunch of code to initialize grid . . .]   
postData: { filters: JSON.stringify(myfilter) },

Также вот colModel для столбца состояния:

{ name: "Status", index: "Status", width: 55, stype: 'select', searchoptions: { sopt: ['eq'], dataUrl: "/Project/StatusGetSelectData1"} },

затем все, что я делаю, я нажимаю на кнопку поиска (у меня есть множественный поиск: true )

Таким образом, поскольку столбец «Status» имеет тип style: «select», мне кажется, что в раскрывающемся списке операторов (который игнорирует цель предварительного фильтра) отображается только оператор «равный», а первый элемент в предварительном фильтре преобразуется. для выбора с элементами из выбора, но:

  1. Значение операции по умолчанию не равно "равно", как вы можете видеть, оно остается пустым
  2. Другие фильтры ниже НЕ конвертируются в выпадающие (они остаются текстовыми полями), а также по умолчанию не равны

Обновление:

Одна проблема исправлена, поскольку у меня не было 'ne' в настройке sopts для этого поля. теперь я вижу это:

enter image description here

Также, Олег ниже попросил посмотреть вывод DataUrl :. Олег, все, что я делаю - это получаю список значений и помещаю его в выпадающий список (см. Ниже)

<select>
<option value="">(None)</option>
<%
foreach (var pair in Model)
{
    %><option value="<%= pair.Value %>"><%= pair.Value %></option>
<%    
}
%></select>

Обновление:

Это теперь исправлено в jqGrid 4.0

1 Ответ

1 голос
/ 19 марта 2011

Одна явная ошибка в вашем коде: вы используете op: "ne" в фильтре, но определяете только 'eq' как единственную разрешенную операцию сравнения searchoptions: { sopt: ['eq'], ...}. Я рекомендую вам использовать полный список операций в sopt и просто установить 'eq' в качестве первого элемента массива sopt.

ОБНОВЛЕНО : Я могу подтвердить, что есть ошибка в модуле jquery.searchFilter.js jqGrid. Здесь - это код, который можно использовать для воспроизведения проблемы, с которой вы также столкнулись. Я не могу найти быстрое исправление ошибки. Как я уже писал ранее, модуль jquery.searchFilter.js будет заменен на новый написанный модуль grid.filter.js в следующей версии jqGrid. Как вы можете видеть здесь проблему, которую вы описали в своем вопросе , не существует в новом модуле . Поэтому я не уверен, что старый модуль когда-либо будет исправлен. Основная проблема в том, что старый модуль использует некоторые функции, такие как jQuery.clone, которые содержат ошибки в jQuery 1.4.x и 1.5.x, и ошибки, вероятно, будут исправлены только в версии 1.6. Поэтому, чтобы исправить некоторые проблемы, существующие в модуле jquery.searchFilter.js , необходимо переписать множество его частей.

С другой стороны, во время тестов я обнаружил, по крайней мере, 5 ошибок в новом модуле, о которых я сообщу триранду позже. Поэтому вам нужно просто набраться терпения и дождаться следующего выпуска jqGrid или, по крайней мере, до тех пор, пока версия на https://github.com/tonytomov/jqGrid/ не станет более стабильной.

...