jqGrid 客户端搜索

jqGrid client-side searching

提问人:bpruitt-goddard 提问时间:12/21/2010 最后编辑:Peter Mortensenbpruitt-goddard 更新时间:8/23/2018 访问量:21180

问:

我想通过 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');

当我单击绑定到的按钮时,没有任何反应,也不会导致任何错误。

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

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

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

jqgrid 客户端

评论

0赞 Oleg 12/21/2010
是否使用高级搜索()?如果使用工具栏搜索,则无论是否使用都很重要。如果您在问题中包含更多代码会更好。multipleSearch:truestringResult:true
0赞 bpruitt-goddard 12/21/2010
我不使用多重搜索,因为只需要在一列上搜索数据。我更新了问题以包含初始化代码。

答:

20赞 Oleg 12/22/2010 #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: truedatatype: "local"loadonce: truedatatype: "local"datatype: "json"datatype: "xml"loadonce: truedatatype'json''xml''setGridParam'

评论

0赞 aknatn 12/20/2011
仅供参考,我将其更改为支持如下所示的多重搜索:var grid = jQuery("#list27"); var postdata = grid.jqGrid('getGridParam','postData'); jQuery.extend (postdata, {filters:'{"groupOp":"AND","rules":[{"field":"field1","op":"ge","data":"search string here"},{"field":"field2","op":"ge","data":"search string here"}]}'}); grid.jqGrid('setGridParam', { search: true, postData: postdata }); grid.trigger("reloadGrid",[{page:1}]);
1赞 Oleg 12/20/2011
@aknatn:你可以在这里找到,这里展示了如何构造为对象,然后用 .filtersJSON.stringify
0赞 diegohb 3/19/2012
@Oleg到底是什么修复程序(对于单个搜索 VS 过滤器)..?是调用 .extend() 来传入原始值吗?