【问题标题】:jqGrid client-side search with 'in array' search operator or a custom search functionjqGrid 客户端搜索,带有“in array”搜索运算符或自定义搜索功能
【发布时间】:2012-05-30 19:08:16
【问题描述】:

我正在将客户端搜索应用于没有搜索对话框的 jqGrid,但我需要使用自定义搜索功能或更聪明的搜索运算符执行搜索,其中一个基本上可以执行 $.inArray([searchString],[searchField])

我的网格有datatype: 'json'loadonce: 'true' 并且不使用multisearch。我要搜索的相关列有colModel: [ {name: 'ancestorIds', hidden: true } ],它将包含一个像[1,2,26,42] 这样的ID 数组。 基于this answer,我正在从网格外的点击事件初始化单字段搜索,如下所示:

var selectedId = $('#selectedId').val();
var $grid = $('#grid');
var postdata = $grid.jqGrid('getGridParam','postData');
$.extend(postdata, {
    filters: '',
    searchField: 'ancestorIds',
    searchOper: 'cn',
    searchString: selectedId
}); 
$grid.jqGrid('setGridParam', { search: true, postData: postdata });
$grid.trigger("reloadGrid", [{page: 1}]);

这很好用,除非 selectedId 为 2,否则使用 searchOper: 'cn' 将错误地返回包含 26 或 42 的行。我的问题是,如何修改搜索以仅返回 selectedId 为实际值的行数组的?

编辑
给定几个示例行,其中ancestorIds 具有以下值,selectedId 值为 2... [1,2,26,42]
[2]
[2,42]
[42]
[22]

...上面的代码选择每一行,但我只希望它返回前三行。

【问题讨论】:

    标签: jquery search jqgrid client-side


    【解决方案1】:

    我不完全理解你的例子。如果您想在“ancestorIds”列中进行精确匹配,您应该使用'eq' 操作而不是'cn'

    如果你真的需要实现非常自定义的本地搜索方法,你可以使用我在the answer 中描述的技术。

    如果您不需要对本地过滤进行如此严格的定制,您应该更详细地描述您的确切要求。

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2011-11-26
      • 1970-01-01
      相关资源
      最近更新 更多