Herb Caudill
Herb Caudill

Reputation: 49952

Filter jqGrid programmatically on client?

Is there a way to filter the data currently displayed in a jqGrid programmatically (in Javascript, not server-side)? All the search examples seem to depend on using jqGrid's own search UI, which doesn't work for me. For example, I'd like to be able to filter based on user actions elsewhere on a page.

I'm imagining something like

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

where CategoryID is a column in the grid and selectedCategoryID contains, for example, a value chosen by the user in a select element.

Upvotes: 6

Views: 5584

Answers (2)

Igor
Igor

Reputation: 61

If you want to pre-filter your data first:

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

where filtereddataarray contains only records you want to display for this view

If you want to construct your filter programmatically(I use this method, mostly):

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");
    }

Upvotes: 6

Rigobert Song
Rigobert Song

Reputation: 2784

You could pass JSON as the data and use the setGridParam method to reload the data!

I have never tried this and not sure how you would get jqgrid to use your client data rather than hit a URL!

Have you had any luck?

Upvotes: 1

Related Questions