2

我在我的网格(jqGrid 4.5.2)中使用表单编辑内联编辑。当我有一个可编辑的列然后打开表单时,我确实看到了 HTML 代码而不是值。屏幕截图显示了我的意思。

带有 HTML 代码的 jqGrid

如果相应行中没有可编辑的字段,则一切正常。我在什么地方读过,我不会Form和和Inline editing一起使用,只是模糊地记得。然而,实际上一切都很好,除了在这种特殊情况下。

我可以在创建Form Editing显示之前将整行重置为只读(文本)吗?还有其他解决方案吗?

-- 编辑 1:奥列格的回答 ---

我已经检查/调试function restoreInline()并注意到两件事:

  1. 我没有连续的行 id,而是像 1,2,4,9 (我的数据库主键)。它们是独一无二的,但中间缺少一些数字。结果,条件if ($t.p.savedRow[i].id == rowid)不满足,restoreRow根本不调用。我的身份证不能有这样的空白吗?以前从来没有注意到这个问题。
  2. 我对第一行和 id "1" 进行了交叉检查。在这种情况下$($t).jqGrid('restoreRow',rowid)被调用,但我仍然在我的字段中看到“HTML 代码”。

-- 编辑 2 --

已明确调用beforeShowFormjqGrid('restoreRow',rowid),但没有成功。

4

1 回答 1

2

表单编辑应该在初始化编辑表单之前调用内部restoreInline(参见它的代码here)调用restoreRow行。该函数将在 之后直接调用(见beforeInitData。因此,如果您需要保存行而不是丢弃数据,例如,您可以在beforeInitData回调中执行此操作。

我想您在网格中有一些 id 重复项。所以调用restoreRow不恢复数据。另一个可能的原因可能是 jqGrid 中的错误,但您必须调试代码以查看为什么restoreInline在您的情况下不会调用函数或为什么它不恢复行。

于 2013-07-09T12:23:09.627 回答