【问题标题】:How to get jqGrid filtered data in json format?如何获取json格式的jqGrid过滤数据?
【发布时间】:2015-05-07 10:11:51
【问题描述】:

我想在我的控制器中获取jqGrid 的数据。我正在使用这个获取jqGrid 的所有数据

$("#gridSourceKey").jqGrid('getGridParam', 'data')

但我想要 JSON 格式的过滤数据。我怎样才能得到它?

【问题讨论】:

  • 我认为 jqGrid 已经获得来自控制器的数据。为什么需要将相同的数据发送回服务器?可能您只需要过滤行的 id 吗?服务器可以直接从数据库中获取其他信息。此外了解您使用的 jqGrid 的哪个分支以及哪个版本非常重要
  • 让我这样说。我有两块代码 1) var gridData = $("#grid").jqGrid('getGridParam','data'); var postData = JSON.stringify(gridData); alert("gridData-"+postData); 2) var gridData1 = $("#grid").jqGrid('getRowData'); var postData1 = JSON.stringify(gridData1); alert("gridData-"+postData1);在第一个块中,我可以使用 JSON.stringify() 解析网格数据,并且可以获得键值对格式的 json 字符串。在第二块中,如果我执行 JSON.stringify() 它会给我 html。如何从“gridData1”获取 json 数据?还有其他解决方法吗?
  • 1) 如果你想我问你的问题,你也应该回答我的问题。 2) getRowData 如果需要的数据不在当前页面上,则不能给出完整的数据。 3) getRowData 获取未格式化的数据。如果您没有正确填写或使用不正确的colModel 属性(例如自定义formatter 而没有unformat),那么您可能会遇到单元格的HTML 代码片段的问题。 4) jqGrid 不同版本的结果可能不同 5) 可以使用getDataIDs 获取当前页面的行ID,使用getLocalRow 获取特定行的数据。
  • 我无法添加新问题。所以我在这里写我的问题本身。function exportExcel() { var gridData = $("#grid").jqGrid ('getGridParam','data'); var postData = JSON.stringify(gridData); $.ajax({ type: "POST", contentType: 'application/json', url: "${exportExcelUrl}", data: postData, success: function(response) { if(response=="SUCCESS") { window .location.href='${downloadOfferListExcelUrl}'; } } }); } 这是我的代码
  • 但我只需要过滤数据。所以我写了 var gridData = $("#grid").jqGrid('getRowData');如果我调用 JSON.stringify(gridData) 它会给我 json 键值对字符串。但在值中我会得到 html。此外,我需要将此 json 数据传递给我的控制器,这将不起作用。因为控制器想要正确的键值对(但不是 html 值)

标签: jqgrid


【解决方案1】:

旧版本的 jqGrid(您使用的 jqGrid 4.3.2)无法获取过滤数据。所以你必须升级到free jqGrid 并使用

$("#gridSourceKey").jqGrid('getGridParam', 'lastSelectedData')

而不是

$("#gridSourceKey").jqGrid('getGridParam', 'data')

只有当您确实无法更新您使用的 jqGrid 时,您才应该遵循the answer 中描述的棘手解决方案。该解决方案包括三个步骤: 1)将原始内部jqGrid函数$.jgrid.from覆盖(子类化)为将最后过滤结果保存在本地lastSelected变量中的函数。 2) loadComplete 将本地lastSelected 变量的结果放置到新的自定义jqGrid 参数lastSelected。 3)$("#gridSourceKey").jqGrid('getGridParam', 'lastSelected')的用法。

【讨论】:

  • 非常感谢奥列格。自过去 4 天以来,我一直在为这个问题而苦苦挣扎。每天我都在用头撞桌子。终于它现在工作了。它是通过覆盖$.jgrid.from 的select 方法来完成的。我会针对其他场景进行测试。非常感谢你。
  • @MohanThakare:不客气!如果问题得到解决,您应该"accept" 答案。我仍然建议您考虑更新旧的 jqGrid 4.3.2 以从 GitHub 释放 jqGrid。它是我开发的 jqGrid 的分支。因此,我可以通过更改代码轻松解决任何可能的问题(例如错误)。如果您使用旧的 jqGrid 4.3.2,您将永远无法修复错误。新版本中已经解决的新解决方案也永远不会为旧版本创建。
  • @MohanThakare: 你点击了["accept"]("meta.stackexchange.com/a/5235/147495")中的链接吗?这里用图片描述了所有内容。要接受答案,你只需点击一下答案左侧的“v”符号。您将增加您的声誉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 2011-08-22
  • 2014-07-02
  • 2015-11-21
  • 1970-01-01
  • 2017-06-27
相关资源
最近更新 更多