【问题标题】:jqGrid client-side searchingjqGrid 客户端搜索
【发布时间】:2011-05-28 10:28:39
【问题描述】:

我想通过 JavaScript 手动将搜索应用到我的 jqGrid。我尝试了指南here,但似乎无法让它完全正常工作。 在网格设置中,我有一个名为“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
    });

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

【问题讨论】:

  • 您是否使用高级搜索(multipleSearch:true)?如果您使用工具栏搜索,是否使用stringResult:true 很重要。如果您在问题中包含更多代码会更好。
  • 我不使用多重搜索,因为数据只需要在一列上搜索。我更新了问题以包含初始化代码。

标签: jqgrid client-side


【解决方案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}]);

您可以查看实时示例here

更新:您将loadonce: truedatatype: "local" 一起使用。在datatype: "local" 的情况下,值loadonce: true 将被忽略。如果您确实从服务器获取数据并使用datatype: "json"datatype: "xml",那么loadonce: true 将起作用。如果您希望搜索(过滤)不在本地而是在服务器上完成,您应该将datatype 重置为'json''xml' 作为'setGridParam' 的附加选项。

【讨论】:

  • 伙计,这正是我要找的!非常感谢
  • 这正是我想要的!谢谢!
  • 仅供参考,我将其更改为支持这样的多搜索: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}]);
  • @aknatn:你可以找到herehere 展示了如何将filters 构造为对象,然后使用JSON.stringify 将其序列化为JSON。
  • @Oleg 究竟是什么修复(对于单个搜索 VS 过滤器).. ?是调用 .extend() 传递原始值吗??
猜你喜欢
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
相关资源
最近更新 更多