jqGrid поиск на стороне клиента - PullRequest
3 голосов
/ 20 декабря 2010

Я хотел бы вручную применить поиск к моему 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');

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

EDIT Вот код для инициализации сетки:

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 Ответ

18 голосов
/ 22 декабря 2010

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

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'.

...