JQGrid get all value for a particular column irrespective of paging
我正在使用" json"从数据库中提取数据。
如何获取特定列的所有值。
我希望获得与"分页"无关的" PrimarySkill"列的所有值/全部值。
1
| var texts = $("#listTableSupply").jqGrid('getCol', 'PrimarySkill'); |
此代码仅给我一部分" PrimarySkill",即为我提供当前页面中的值。
我想要完整的设定值。
如果您具有纯服务器端网格(具有datatype:"xml"或datatype:"json"并且未使用loadonce: true),则jqGrid将不存在有关其他页面数据作为当前页面的信息。
如果使用服务器一次返回所有数据的本地网格或远程网格(使用loadonce: true),则数据将保存在jqGrid的内部_index和data参数中。这样就可以使用
来获取数据
1 2 3 4
| var mydata = $("#listTableSupply").jqGrid("getGridParam","data"),
myPrimarySkill = $.map(mydata, function (item) { return item.PrimarySkill; });
alert (JSON.stringify(myPrimarySkill)); |
如果您需要格式为{id:rowid, value:cellvalue}的数据(例如getCol,其中true作为第二个参数),则代码可能类似于以下内容
1 2 3 4 5 6 7
| var mydata = $grid.jqGrid("getGridParam","data"),
ids = $grid.jqGrid("getGridParam","_index"),
myPrimarySkillWithIds = $.map(ids, function (index, key) {
return { id: key, value: mydata[index].PrimarySkill };
});
alert (JSON.stringify(myPrimarySkillWithIds)); |
- 您的答案非常完美且具有描述性。我正在使用本地网格,使用loadonce:true从" json"中的服务器中获取数据。
-
@Oleg:谢谢,您的回答很好。但是,我有1个问题。我在这里阅读了您的答案。如果要使getUniqueNames函数与此功能一起使用(从所有页面获取数据),如何重新编写getUniqueNames以便它仍然接受columnName作为参数?
-
@ Forte_201092:您只需获取所有数据的$grid.jqGrid("getGridParam","data")和columnName属性,而不是getUniqueNames中使用的grid.jqGrid('getCol',columnName)。
-
@Oleg:getUniqueNames = function(columnName),在此函数中,columnName是传入的字符串,用于了解要获取数据的列。但是因为它是一个字符串,所以我们不能编写类似item.columnName的东西来获取数据,对吗?我只想使函数通用。如上面的代码所示,我们仅获得名为PrimarySkill的列。我希望将列名作为变量传递。
-
@ Forte_201092:您只需要进行循环或使用jQuery.map例如。如果您在实施方面遇到问题,可以提出一个单独的问题来准确描述问题所在。我会在答案中发布相应的getUniqueNames。
-
有什么建议,如果数据不是来自本地数据?
-
@AdiyatMubarak:如果数据不是本地数据,则让jqGrid仅提供有关当前页面的信息。更改页码或更改页面大小时,它将请求发送到服务器(至url)。因此,必须向服务器发出单独的自定义Ajax请求,以从所有页面获取该列的数据。
-
@AnhTriet-您介意发布解决方案以使其与getUniqueNames函数一起使用吗?我遇到了同样的问题
-
@FastTrack:是的,很简单。代替编写item.columnName,我们使用item['columnName']。在括号中传递字符串名称。有关更多信息,您可以查看此答案
-
@AnhTriet谢谢!我尝试通过执行var texts = $.map(mydata, function (item) { return item['columnName']; });来实现,但是texts的长度始终为0。当我将columnName更改为实际的列名时,即使columnName是变量(getUniqueNames的参数之一),它也能很好地工作!你有同样的麻烦吗?
-
@FastTrack:抱歉,我没有那样走,所以我没有那个问题:)
-
@AnhTriet不用担心,我已将其更正...我只需要删除括号内的单引号(不敢相信我之前没有注意到!)。因此它看起来像item[columnName]。谢谢你的帮助!同时也感谢@Oleg的最初回答。