Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqGrid表单编辑,表单字段中的值改为HTML_Javascript_Jquery_Jqgrid - Fatal编程技术网

Javascript jqGrid表单编辑,表单字段中的值改为HTML

Javascript jqGrid表单编辑,表单字段中的值改为HTML,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我在我的网格中使用和(jqGrid 4.5.2)。当我有一个可编辑的列,然后打开表单时,我确实看到了HTML代码而不是值。截图显示了我的意思 如果对应行中没有可编辑的字段,则一切正常。我在某个地方读过,我不会将表单和内联编辑一起使用,只会模糊地记得。然而,事实上,除了在这种特殊情况下,一切都很正常 在创建表单编辑显示之前,是否可以将整行重置为只读(文本)?还有其他解决办法吗 --编辑1:奥列格的答案--- 我已经检查/调试了函数restoreInline(),并注意到两件事: 我没有连续的行I

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

如果对应行中没有可编辑的字段,则一切正常。我在某个地方读过,我不会将
表单
内联编辑
一起使用,只会模糊地记得。然而,事实上,除了在这种特殊情况下,一切都很正常

在创建
表单编辑
显示之前,是否可以将整行重置为只读(文本)?还有其他解决办法吗

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

我已经检查/调试了
函数restoreInline()
,并注意到两件事:

  • 我没有连续的行ID,但类似于1,2,4,9(我的DB主键)。它们是唯一的,但中间缺少一些数字。因此,
    if($t.p.savedRow[i].id==rowid)
    条件未满足,并且根本未调用
    restoreRow
    。我不能在ID中有这样的间隙吗?以前从未注意到这方面的问题
  • 我对第一行和id“1”进行了交叉检查。在本例中,调用了
    $($t).jqGrid('restoreRow',rowid)
    ,但我仍然在字段中看到“HTML代码”
  • --编辑2--


    已在中显式调用
    jqGrid('restoreRow',rowid)
    ,但未成功。

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


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

    将在一段时间后检查并报告,我很可能排除重复的ID,让我们看看调试将发现什么。谢谢你!更新了以上内容,认为这是正确的想法,但不知何故让我感到困惑。@HorstWalter:Array
    $t.p.savedRow
    包含正在进行内联编辑的行的行ID列表。因此,条件
    if($t.p.savedRow[i].id==rowid)
    意味着:“如果当前行(表单编辑开始的位置)正在就内联编辑进行编辑”。我不能给你更多提示,因为你几乎没有发布任何信息:没有JavaScript代码,没有输入数据(ID为1,2,4,9),没有测试用例。如果你自己不解决这个问题,你应该在问题后面加上更多的信息。我仍然认为你有重复的问题。如果您有rowid=1的网格,那么您可以尝试使用
    $(“*[id=1]”)来代替
    $(“*[id=1]”)来
    $(“*[id='1']”)来
    。例如,
    $(“#1”).length的值一直是我最近回答的一个问题,即在打开和关闭添加/编辑表单后,网格的重新加载不起作用。问题是用户对网格(
    )和列的名称使用了相同的id值。打开添加/编辑表单后,新的
    元素使用与网格的
    相同的id创建。所以网格中所有行的插入都不起作用,因为有人尝试将
    作为隐藏形式的
    中的子行插入。我只想强调,身份证重复问题主要是间接造成的。包含不完美的代码,但是非常好的代码来检测id重复问题。非常好的提示,我更关注原始数据,而不是DOM id,可能是意外地包含重复项。不幸的是,仍然没有找到根本原因,所提到的代码(检测重复项)没有显示任何内容。也有一个具有类似名称(Id)的网格头,但更改其值也没有帮助。不过,我会密切留意情况,并可能找出原因。将与同一应用程序中的其他网格(tbd)进行交叉检查。如果您发布了重现问题的演示(包括一些ID为1,2,4,9的测试数据,如您之前所写),我可以检查演示。如果你有一个在线网址,我也可以看看。无论如何,如果
    $(this).jqGrid('restoreRow',rowid)
    beforeShowForm
    中,请不要还原编辑行,因为您的ID有一些问题。