Фильтровать jqGrid программно на клиенте? - PullRequest
6 голосов
/ 07 января 2010

Есть ли способ фильтровать данные, в настоящее время отображаемые в jqGrid программно (в Javascript, а не на стороне сервера)? Все примеры поиска, похоже, зависят от использования собственного пользовательского интерфейса поиска jqGrid, который мне не подходит. Например, я бы хотел иметь возможность фильтрации на основе действий пользователя в другом месте на странице.

Я представляю что-то вроде

jQuery("#grid_id").filter('CategoryID', selectedCategoryID);

где CategoryID - это столбец в сетке, а selectedCategoryID содержит, например, значение, выбранное пользователем в элементе select.

Ответы [ 2 ]

6 голосов
/ 14 февраля 2012

Если вы хотите предварительно отфильтровать данные:

$('#myGrid').setGridParam({ data: filtereddataarray }).trigger("reloadGrid");

, где FilterDataarray содержит только записи, которые вы хотите отобразить для этого представления

Если вы хотите построить свой фильтр программно (я в основном использую этот метод):

var filters = { "groupOp": "AND", "rules": [{ "field": "id", "op": "eq", "data": "9" }, { "field": "amount", "op": "ge", "data": "10" }, { "field": "name", "op": "cn", "data": "do i"}] };

//To filter:
jqGridFilter(filters , $('#myGrid'));

//To reset: 
jqGridFilter(null, $('#myGrid'));

    function jqGridFilter(filtersparam, grid) {
        grid.setGridParam({
            postData: {
                filters: filtersparam
            },
            search: true
        });
        grid.trigger("reloadGrid");
    }
1 голос
/ 07 января 2010

Вы можете передать JSON в качестве данных и использовать метод setGridParam для перезагрузки данных!

Я никогда не пробовал этого и не уверен, как заставить jqgrid использовать данные вашего клиента вместо того, чтобы нажимать на URL!

Вам повезло?

...