【问题标题】:jqGrid batch save - how to get all row data in edit modejqGrid批量保存-如何在编辑模式下获取所有行数据
【发布时间】:2013-04-30 21:29:23
【问题描述】:

我有一个包含 100 多行的 jqGrid,默认情况下以编辑模式显示。我正在尝试找出一种方法来在一次调用中将所有行数据发送到服务器。

问题 - 如何在编辑模式下获取行数据(getRowData 方法返回 html)?

一旦我得到所有的行数据,我希望可以将它们解析为 JSON 格式并通过 jQuery.ajax() 调用将其发送到服务器。

非常感谢您在这方面的任何帮助!

【问题讨论】:

  • 我看到了 Oleg 对类似问题的回答 - ['code']$("#" + rowid + ">td:nth-child(" + (i + 1) + ")>input ").val()['代码']。这行得通。但是,我有一列对于某些行是不可编辑的,而且有些列是 ,因此上述策略可能涉及太多的硬编码。

标签: jqgrid


【解决方案1】:

我可以想象很多方法来实现您的要求。我会用最简单的描述你。它由

  • 保存所有编辑行。如果您使用内联编辑模式,则需要为所有编辑行调用 saveRow。因为saveRow 在内部测试该行是否正在编辑,并且因为大多数行(可能甚至所有行)已经处于编辑模式,所以您可以使用getDataIDs 获取所有行的ID 数组,然后调用saveRow 在从返回的 id 循环。
  • 使用不带参数的getRowData 或使用getGridParam 来获得"data" 选项。
  • 使用jQuery.ajax将数据发送到服务器。
  • 最后一步是可选的。您可以为所有行启动编辑模式。

我认为上述方法不仅很容易实现。它主要用于保存,因为它适用于每个编辑控件(包括自定义控件)。

【讨论】:

  • 我已经以这种方式开始了我的实施,但被卡住了。这是我对上述方法的担忧。当我遍历 ids 数组并调用 saveRow 时,如果其中一行出现验证错误,例如必填字段,该行将保持编辑模式。然后当我使用 getRowData 时,我将获得该行的 html 内容。有没有办法,当 saveRow 每行成功时,我可以将行数据添加到 JSON 对象?我尝试了 saveRow 的“aftersavefunc”处理程序,但它使用 rowId 和 true/false 调用。
  • 再想一想 - 我猜在“aftersavefunc”中我可以看到该行是否保存成功。如果保存成功,我可以使用 rowId 使用 getRowData,然后添加到 JSON 对象。我会试一试,但如果你有更好的实现,请告诉我。
  • @RRK:您可以通过获取"savedRow" 选项($("#grid").jqGrid("getGridParam", "savedRow"))轻松检测验证错误(并非所有行都将被保存但仍处于编辑模式的情况)。如果现在没有行正在编辑,则返回值为空数组。
  • 谢谢奥列格!!对于其他面临类似问题的人,我遵循 Oleg 的步骤,但也使用 saveRow 的“aftersavefunc”处理程序将所有成功保存的行收集到一个数组中。处理完所有行后,我使用$("#grid").jqGrid("getGridParam", "savedRow") 检查是否存在验证错误,如果没有验证错误,则对发送数组的服务器进行 AJAX 调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多