【发布时间】:2016-02-18 12:41:21
【问题描述】:
我有一个 jqGrid,我希望能够加载已经应用的过滤器(可能会通过 URL 传递)。为了测试,我对过滤器进行了硬编码,但我无法让它工作。我正在尝试遵循here 的答案以使其正常工作。
我的网格代码(为简单起见删除了一些列):
<script type="text/javascript">
$(function(){
$("#users").jqGrid({
datatype: 'json',
url: 'myLoadURL',
gridview: true,
loadonce: true,
colModel: [
{name: 'lastname', label: 'Last Name'},
{name: 'firstname', label: 'First Name'},
{name: 'email', label: 'Email'}
],
height:'auto',
autowidth:true,
caption:'Users',
rowNum:20,
rowList:[10,20,50],
ignoreCase: true, // case-insensitive filtering
pager: '#pager',
postData: {
filters: '{"groupOp":"AND",rules:[{"field":"lastname", "op":"cn", "data":"smith"},{"field":"firstname","op":"cn","data":"john"}]}'
},
search:true
});
$("#users").jqGrid("filterToolbar", {searchOnEnter: false});
});
</script>
<table id="users"><tr><td></td></tr></table>
<div id="pager"></div>
在这种情况下,我试图过滤名字包含“John”和姓包含“Smith”的用户。但是,所有记录都已加载。如何获取要应用的初始过滤器值?
【问题讨论】:
-
您是否在服务器代码 (
myLoadURL) 中实现了服务器端过滤?是否要加载服务器上已经过滤的数据,然后使用`loadonce: true`设置其他过滤器并进行本地排序、分页和过滤?网格中总共会返回多少行(100、1000、10000、1000000)? -
@Oleg - 没有服务器端过滤,我使用的是
loadonce:true。所有的过滤/排序/分页都在前端完成。网格包含大约 16,000 行。我正在尝试确定是否有办法在数据全部加载到网格中之前应用过滤器。