Можно ли отправить тип поля при фильтрации в jqgrid? - PullRequest
1 голос
/ 10 марта 2011

мое клиентское приложение jqgrid отправляет:

{ "groupOp":"AND", "rules":[{"field":"customernumber", "op":"ge", "data":"200"}]}

возможно ли заставить jqgrid отправлять даже поле типа sth вроде

{"groupOp": "AND", "rules": [{"field": "customernumber", "type": "int":, "op": "ge", "data": "200" }]}

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Прежде всего нужная вам функция не существует в jqGrid.Более того, проблема в том, что jqGrid не имеет информации о типе данных столбца , которую вы можете использовать напрямую.В jqGrid есть только такие настройки, как sorttype , используемый только для локальной сортировки, или formatter и edittype .Дополнительно существует stype , который может быть либо «текст», либо «выбрать».Таким образом, нет типа данных для столбца.По моему мнению, наличие нового свойства datatype может быть интересной функцией для будущих версий jqGrid.

Теперь о реальности.Если вы знаете, какой из параметров столбца является типом данных в вашем случае (sorttype, formatter или edittype), вы можете расширить информацию из параметра filter в postData необходимой информацией.Для реализации этого вы можете использовать serializeGridData , например.Внутри дескриптора события serializeGridData вы можете проверить параметр filter .Если он существует, вы можете преобразовать его в объект с учетом jQuery.parseJSON результирующего объекта фильтра, который вы можете легко расширить с помощью дополнительного свойства type в массиве rules.Для этого вы можете сопоставить свойство field элемента массива rules со свойством edittype (или sorttype, formatter) colModel.Кстати, вы можете легко получить ссылку на colModel из сетки с помощью $("list").jqGrid('getGridParam','colModel').После того, как вы изменили объект filter, вы можете преобразовать его обратно в JSON с помощью функции JSON.stringify из json2.js и поместить его в postData с, чтобы отправить его на сервер.

Все, что я объясняю выше, является лишь приблизительной схемой, но ее можно относительно легко реализовать.

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

Недавно у меня возникла такая же потребность, и я преодолел ее, передав «сервер знаний» на стороне.

Проблема: jqGrid не поддерживает то, что вам нужно, ононе заботится о типе поля, и имеет смысл, чтобы принудительное применение этого могло вызвать другие проблемы.Реализация собственного механизма сериализации выглядит слишком сложной и, вероятно, доставит вам некоторые проблемы при будущих обновлениях элемента управления.Для меня это решение должно было использоваться повсеместно, так как в моих приложениях обычно было много сеток с поддержкой поиска, я не хотел переопределять какие-либо функциональные возможности сетки по умолчанию, чтобы избежать проблем с будущими обновлениями элементов управления.

Мое решение: Что jqGrid дает вам, это имя столбца, значение фильтра и операция.На стороне сервера вы можете получить тип столбца по имени столбца, так что вам действительно не нужна эта информация.Поместите эти знания в службу или контроллер или куда бы вы ни звонили, чтобы выполнить запрос на поиск, и все должно быть в порядке.

Краткое примечание: В моем случае я использую .netEntity Framework, поэтому я получаю тип столбца из типа свойства объекта ORM.

Ура!Alex

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