jqGrid表单编辑,HTML而不是表单字段中的值

时间:2013-07-09 11:55:22

标签: javascript jquery jqgrid

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

jqGrid with HTML code

如果相应行中没有可编辑的字段,则一切正常。我在某处读过,我不会同时使用FormInline editing,但只能隐约记得。但是,除了在这种特殊情况下,实际上一切正常。

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

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

我检查/调试了function restoreInline()并发现了两件事:

  1. 我没有连续的行ID,而是1,2,4,9(我的数据库主键)。它们是独一无二的,但两者之间缺少一些数字。因此,条件if ($t.p.savedRow[i].id == rowid)未得到满足,restoreRow根本未被调用。我不能在ids中有这样的空白吗?以前从未注意到这个问题。
  2. 我做了第一行和id" 1"的交叉检查。在这种情况下,$($t).jqGrid('restoreRow',rowid)被调用,但我仍然看到" HTML代码"在我的领域。
  3. - 编辑2 -

    beforeShowForm中明确调用jqGrid('restoreRow',rowid),但没有成功。

1 个答案:

答案 0 :(得分:2)

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

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