jqGrid客户端搜索

bpr*_*ard 3 client-side jqgrid

我想通过JavaScript手动将搜索应用到我的jqGrid.我在这里尝试了一个指南,但似乎无法让它完全正常工作.在网格设置中,我有一个名为'error_column'的列,我想在搜索字符串'Test'时执行搜索.

这是我到目前为止:

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

当我单击这个绑定的按钮时,没有任何反应,它不会导致错误.

编辑 以下是初始化网格的代码:

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
    });
Run Code Online (Sandbox Code Playgroud)

我使用本地数组将数据绑定到网格.

Ole*_*leg 18

您应该以另一种方式实现单个字段的搜索:

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}]);
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到实例.

已更新:您可以使用loadonce: truedatatype: "local"在一起.如果loadonce: true是,该值将被忽略datatype: "local".如果您确实从服务器获取数据并使用datatype: "json"datatype: "xml",那么loadonce: true将起作用.如果您希望搜索(过滤)不在本地但在服务器上进行,则应重置datatype'json''xml'作为其他选项'setGridParam'.