2
我在我的网格(jqGrid 4.5.2)中使用Form Editing和Inline Editing。当我有一个可编辑的列,然后打开表单时,我确实看到了HTML代码而不是值。截图显示了我的意思。jqGrid表单编辑,HTML代替值在表单域
如果没有字段对应行中的编辑,一切都很好。我已经读过某处,我不会一起使用Form
和Inline editing
,但只能隐约记住。但是,实际上所有工作都很好,除了这种特殊情况。
在创建Form Editing
显示器之前,是否可以将整行重置为只读(文本)?其他解决方案?
- 编辑1:奥列格的答案---
我已签/调试到function restoreInline()
,并注意到两两件事:
- 我没有连续的行ID,而是要像1,2 ,4,9(我的数据库主键)。它们是独一无二的,但有些数字在两者之间缺失。因此,条件
if ($t.p.savedRow[i].id == rowid)
未被满足,并且restoreRow
根本没有被调用。我不能在ID中有这样的空白吗?之前从未发现过这个问题。 - 我做了一个交叉检查,第一行和id为“1”。在这种情况下,调用
$($t).jqGrid('restoreRow',rowid)
,但我仍然在我的字段中看到“HTML代码”。
- 编辑2 -
明确地称为beforeShowFormjqGrid('restoreRow',rowid)
,但没有成功。
我仍然认为你有id重复的问题。如果你有rowid = 1的网格,那么你可以尝试使用'$(“* [id = 1]”)或$(“* [id ='1']”)''而不是'$(“ #1" )'。 '$(“#1”)。length'的值总是<= 1,但是'$(“* [id = 1]”)'会让你拥有'id =“1” '。因此,如果存在多个作为具有'id =“1”''的元素存在的情况,则使用'$(“* [id = 1]”)得到'** all **元素和'$(“* [id = 1]“)。”length“可能大于1. – Oleg
例如,我最近回答了在添加/编辑表单打开和关闭后网格重新加载不工作的问题。问题在于用户对网格使用了相同的id值('
[The answer](http://stackoverflow.com/a/509965/315935)包含不完美,但非常好的代码来检测id重复的问题。 – Oleg
回答
表格编辑应调用内部
restoreInline
(请参阅其代码here),在初始化编辑表单之前调用restoreRow
作为行。该函数将在beforeInitData
之后直接调用(请参阅the line)。因此,如果您需要保存行而不是放弃数据,例如您可以在beforeInitData
回调中执行此操作。我想你在网格中有一些id重复。所以
restoreRow
的调用不会恢复数据。另一个可能的原因可能是jqGrid中的一个错误,但是你必须调试你的代码,看看为什么restoreInline
函数将不会被调用,或者它为什么不能恢复行。来源
2013-07-09 12:23:09 Oleg
将会在一段时间后检查并报告,我很可能会排除重复ID,我们来看看会发现哪些调试。非常感谢! –
以上更新,认为这是正确的想法,但不知何故混淆了我。 –
@HorstWalter:数组'$ t.p.savedRow'包含在线编辑方面正在编辑的rowid列表。所以条件'if($ t.p.savedRow [i] .id == rowid)'意味着:“如果当前行(开始表单编辑)正在编辑内联编辑”。我不能给你更多的提示,因为你几乎没有发布信息:没有JavaScript代码,没有输入数据(ID为1,2,4,9),没有测试用例。如果你自己没有解决问题,你应该附上更多信息。 – Oleg
相关问题