Dav*_*vid 7 search filter jqgrid
这里似乎有一些关于这个问题的问题,他们有一些很好的答案,但似乎我的情况有点不同.我需要过滤jqGrid中显示的记录,但完全是客户端.
出于多种原因,我填充网格的最佳方法是使用直接发送到页面上的JavaScript的数组.网格本身根本不与服务器交互.我在各种网格事件中都有一些自定义的AJAX,但就是这样.(基本上,我将其与现有的一组服务相结合,这些服务不会发生重大变化.)
我想要做的是根据简单的文本输入和按钮过滤网格.我的页面有文本输入,按钮和表格(在文档就绪时成为网格).我想绑定到按钮的click事件(正常的jQuery事件绑定,没什么特别的),并使用文本输入中的值作为jqGrid上的显示过滤器.
"过滤器"是指仅显示包含输入中文本的匹配(在任何字段中)的记录.然后,要显示所有记录,只需清空输入并再次单击该按钮.此外,网格是多选的,选择需要通过过滤保持.我只需要能够隐藏与输入中的行不匹配的行.
这可能吗?
Ole*_*leg 21
要过滤本地电网,你应该只填写filters了财产postData的jqGrid的参数,并设置附加search:true.
要保存网格的选择,您可以使用reloadGrid附加参数[{page:1,current:true}](请参见此处).
相应的代码可以是以下内容
$("#search").click(function() {
var searchFiler = $("#filter").val(), grid = $("#list"), f;
if (searchFiler.length === 0) {
grid[0].p.search = false;
$.extend(grid[0].p.postData,{filters:""});
}
f = {groupOp:"OR",rules:[]};
f.rules.push({field:"name",op:"cn",data:searchFiler});
f.rules.push({field:"note",op:"cn",data:searchFiler});
grid[0].p.search = true;
$.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
grid.trigger("reloadGrid",[{page:1,current:true}]);
});
Run Code Online (Sandbox Code Playgroud)
我为你做了一个演示,为两个列'Client'('name')和'Notes'('note')过滤,你可以扩展代码以搜索你需要的所有列.
依靠什么你到底有保存行选择,你可以需要从保存当前选择指selarrrow在一个变量和恢复所选行与尊重为setSelection方法.