Я не уверен, но я полагаю, что источником вашей первой проблемы может быть смешение свойств postData.filters
и postData
и использования filter
вместо фильтров``. Вы используете
postfilt = $("#status").jqGrid('getGridParam', 'postData').filter;
, чтобы получить свойство filter
вместо filters
. Вы получаете значение undefined
. Поэтому настройка postData
на postfilt
ничего не значит.
Следующая проблема заключается в том, что ответ сервера содержит нефильтрованные данные. Чтобы принудительно фильтровать данные локально , вам необходимо перезагрузить сетку один раз после завершения загрузки с сервера. Вы можете сделать это внутри loadComplete
. Именно здесь вы можете установить postData.filter
, если необходимо, установить search: true
и инициировать перезагрузку события. Важно сделать это один раз, чтобы не было рекурсии, и вы не должны устанавливать datatype
в "json"
в этом случае. datatype
будет изменен на "local"
и конец загрузки с сервера в случае использования опции loadonce: true
. Если вы хотите применить фильтрацию локально , вам необходимо перезагрузить сетку один раз с помощью опций datatype: "local", search: true
и postData
, имеющих filters
, определяющих фильтр, который необходимо применить. См. Код из ответа или другого , который делает другие вещи, но код, который вам нужен, будет очень близок.