Javascript 如何过滤jqGrid数据而不是网格本身
据我所知,它用于过滤和搜索数据。 我正在制作自己的过滤器,这些过滤器使用网格Javascript 如何过滤jqGrid数据而不是网格本身,javascript,jqgrid,free-jqgrid,Javascript,Jqgrid,Free Jqgrid,据我所知,它用于过滤和搜索数据。 我正在制作自己的过滤器,这些过滤器使用网格postData,其格式众所周知: { "groupOp": "AND", "groups" : [ { "groupOp": "OR", "rules": [ { "field": "name", "op": "eq", "data": "England" }, { "field": "id", "op"
postData
,其格式众所周知:
{ "groupOp": "AND",
"groups" : [
{ "groupOp": "OR",
"rules": [
{ "field": "name", "op": "eq", "data": "England" },
{ "field": "id", "op": "le", "data": "5"}
]
}
],
"rules": [
{ "field": "name", "op": "eq", "data": "Romania" },
{ "field": "id", "op": "le", "data": "1"}
]
}
此数据在内部转换为jlinq
query。
是否有任何公共函数可用于获取网格的当前查询?
我还发现有一种私有的可能性,可以像sql
一样获取它
我想尽可能多地使用默认的jqGrid
功能,但没有找到任何东西。如有任何提示,我们将不胜感激
更新2:
下面是当前的实现。我需要采用它,所以有一些丑陋的部分,但你可以过滤价值观,以获得想法。首先,玩网格,因为代码很糟糕(这就是为什么我想更改它,真的:))
所以,主要思想是:
规则
和组
规则
和组
,然后过滤数据。这里是我的问题部分:我需要过滤数据,而不是网格,只是一个数据来获得唯一的值。现在,我从postData
生成一个正则表达式,并通过plainjavascript
生成网格数据子集。您可以在getDistinctColumnValues
和中看到这一点,我想使用一些网格过滤可能性使其工作方式与使用postData
设置进行过滤/搜索时所有选项的工作方式相同
此外,我还看到了一些内部函数,可以将过滤器作为
sql
-其中-这对于后端原型设计也很好。对不起,但我不确定您需要实现什么。您可以获取lastSelectedData
参数,以根据当前过滤器获得过滤和排序数据的数组。完整数据可通过lastSelectedData
参数获得。postData
参数的filters
属性获取当前筛选器
您问“是否有任何公共函数可以获取网格的当前查询?”。您可以使用getGridParam
方法获取当前查询。我猜,您希望访问接近jlinq的一些内部结构,但它实际上没有实际价值。您可以通过$.jgrid.from
访问该类,但它并没有真正的帮助。实际操作只需在postData中设置新过滤器。过滤器
参数,将search
参数设置为true
,并调用触发器(“reloadGrid”)
用新数据重新加载网格
如果您需要自己过滤或排序某些数据,那么数组方法filter
和sort
将更有效。如果以上信息不能帮助您解决问题,请在问题后附加附加更多信息,这些信息将在示例中更详细地描述问题,并向我发表小评论
已更新:我仍然不能确定我是否完全理解您想要实现的功能。在我看来,如果您使用一些免费的jqGrid选项,那么您的JSFiddle演示的大部分功能都可以删除
看,哪个用过
colModel: [
{ name: 'name' },
{ name: 'surname' },
{ name: 'age' },
],
cmTemplate: {
width: 100,
autoResizable: true,
stype: 'select',
searchoptions: {
generateValue: true,
noFilterText: "(All)"
}
},
它在每列上设置一些默认属性。从4.14.0版开始,免费jqGrid支持generateValue:true
属性的searchoptions
,用于具有stype:“选择”
(请参阅)。在内部,它的工作方式类似于colModel
的另一个选项:createColumnIndex:true
,它从所有具有createColumnIndex:true
的列中的唯一值生成映射。可以使用getUniqueValueFromColumnIndex
方法获取任何列的索引(如var indexName=$(“#列表”).jqGrid(“getUniqueValueFromColumnIndex”,“name”);
)。如果使用stype:'select',搜索选项:{generateValue:true}
,则filterToolbar
使用索引自动生成
元素。jqGrid在内部使用oSv=$(“#列表”)[0]代码>(请参阅)。因此,使用该功能可以节省大量定制
在使用createColumnIndex:true
或generateValue:true
的情况下,唯一一件事是不要忘记的:在加载或重新加载数据后,将生成索引。因此,在填充数据之后,应该调用filterToolbar
。如果使用loadonce:true
选项从服务器加载数据,则应在loadCompleted
回调中调用filterToolbar
better(如演示中所示)。如果直接加载本地数据,则不需要。填充数据后,只需调用filterToolbar
另一种选择是使用
而不是
。它允许使用过滤器工具栏中的
,但具有选择或选择功能2。请参阅,我使用的createColumnIndex:true,searchoptions:{sopt:[“cn”、“eq”、“bw”、“ew”、“bn”、“nc”、“en”],clearSearch:true,generateDatalist:true}
。数据列表在不同的web浏览器中以稍有不同的方式实现,它们有一些缺点,但它是本机的实现特性,因此工作速度非常快。例如,可以在网格中使用1000个唯一值和10000行(我严格建议在这种情况下使用本地数据分页,并使用页面大小10-25)。包含1000个元素的数据列表仍然具有良好的性能,例如select2
最后一句话。我看到您构建了colModelIndexesByNames
来按名称查找列。内置参数iColByName
已经存在于免费jqGrid中,并且可以在内部使用。如果p
是对jqGrid(var p=$(“#list”).jqGrid(“getGridPara”)参数的引用