jqGrid поиск на стороне клиента

Я хотел бы вручную применить поиск к моей jqGrid через JavaScript. Я попробовал руководство здесь, но не могу заставить его работать. В настройке сетки у меня есть столбец с именем error_column, который я хотел бы выполнить при поиске строки "Test".

Вот что у меня так далеко:

var filter = { "field": "error_column", 'oper': 'eq', "data": 'Test' };
$("Grid2").jqGrid('setGridParam', { search: true, postData: { filters: filter} })
$("Grid2").trigger('reloadGrid');

Когда я нажимаю кнопку, с которой это связано, ничего не происходит, и это не вызывает ошибок.

РЕДАКТИРОВАТЬ Вот код для инициализации сетки:

jQuery("#Grid2").jqGrid({
    datatype: "local",
    height: 250,
    colNames: ['NewSubscriberID', 'Conflicting Subscriber ID', 'Error Field', 'Error Message'],
    colModel: [
        { name: 'new_subscriber_id', index: 'new_subscriber_id', width: 120},
        { name: 'conflicting_subscriber_id', index: 'conflicting_subscriber_id', width: 170},
        { name: 'error_column', index: 'error_column', width: 90, sorttype: "text", search: true},
        { name: 'error_type', index: 'error_type', width: 145}
    ],
    loadonce: true
    });

Я связываю данные с сеткой, используя локальный массив.

1 ответ

Решение

Вы должны реализовать поиск по одному полю немного по-другому:

var grid = jQuery("#Grid2");
var postdata = grid.jqGrid('getGridParam','postData');
jQuery.extend (postdata,
               {filters:'',
                searchField: 'error_column',
                searchOper: 'eq',
                searchString: 'Test'});
grid.jqGrid('setGridParam', { search: true, postData: postdata });
grid.trigger("reloadGrid",[{page:1}]);

Вы можете увидеть живой пример здесь.

ОБНОВЛЕНО: Вы используете loadonce: true а также datatype: "local" все вместе. Значение loadonce: true будет игнорироваться в случае datatype: "local", Если вы получаете данные с сервера и используете datatype: "json" или же datatype: "xml", затем loadonce: true буду работать. Если вы хотите, чтобы поиск (фильтрация) осуществлялся не локально, а на сервере, вам следует перезагрузить datatype в 'json' или же 'xml' как дополнительная опция 'setGridParam',

Другие вопросы по тегам