Jquery 传统上,您将用作jqGrid输入的数据从文本更改为值(ID)。因此,您现在可以在Delete对话框中获得值而不是文本。在我看来,从免费jqGrid 4.8.2迁移到4.9.2似乎与问题无关

Jquery 传统上,您将用作jqGrid输入的数据从文本更改为值(ID)。因此,您现在可以在Delete对话框中获得值而不是文本。在我看来,从免费jqGrid 4.8.2迁移到4.9.2似乎与问题无关,jquery,jqgrid,jqgrid-asp.net,free-jqgrid,Jquery,Jqgrid,Jqgrid Asp.net,Free Jqgrid,在我看来,问题的解决方案似乎是更改您在删除表单中使用的beforeShowForm的代码。从列收货人(通过使用$(this).jqGrid('getCell',rowId',收货人'))获取值后,必须使用列的editoptions.value属性将值转换为文本。您当前只在代码中使用value:eval(“(“+g_oConsigneeList+”)”)。因此,我不清楚用于value的数据格式。无论如何,使用value:$.parseJSON(“(“+g_oConsigneeList+”)”)似乎

在我看来,问题的解决方案似乎是更改您在删除表单中使用的
beforeShowForm
的代码。从列
收货人
(通过使用
$(this).jqGrid('getCell',rowId',收货人')
)获取值后,必须使用列的
editoptions.value
属性将值转换为文本。您当前只在代码中使用
value:eval(“(“+g_oConsigneeList+”)”)
。因此,我不清楚用于
value
的数据格式。无论如何,使用
value:$.parseJSON(“(“+g_oConsigneeList+”)”)
似乎更适合于减少安全问题。要将值转换为文本,需要分析
editoptions.value
property。jqGrid允许使用不同形式的
。例如,如果使用对象形式,则可以使用以下代码

beforeShowForm: function ($form) {
    var $self = $(this), p = $self.jqGrid("getGridParam"),
        val = $self.jqGrid("getCell", p.selrow, "Consignee"),
        cm = p.colModel[p.iColByName.Consignee],
        editVal = cm.editoptions.value;
    $("td.delmsg", $form[0]).html("Do you really want delete the <b>   Consignee: " +
        editVal[val] + "</b>?");
}

helper方法
$.jgrid.getDataFieldOfCell
为我们获取
元素或单元格的内部(如果使用了一些包装器)。一个cal然后使用
$cell.text()
获取所需数据。

该值以变量
g\u oConsigneeList
的形式出现JSON@Rahul:抱歉,但是“JSON格式”的信息实际上没有得到任何信息。字符串
'{“val1”:“text1”,“val2”:“text2”}
是正确的JSON字符串,
$.parseJSON('{“val1”:“text1”,“val2”:“text2”}')
是对象
{val1:“text1”,val2:“text2”}
。同样地,
“\”val1:text1;val2:text2\”
也是正确的JSON字符串,
$.parseJSON(“\”val1:text1;val2:text2\”)
返回字符串
“val1:text1;val2:text2”
。然而,
value:{val1:text1',val2:text2}
应该被解析,并以另一种方式作为
value:“val1:text1;val2:text2”
使用。谢谢你,奥列格先生。它绝对工作正常。但出于好奇,我想问这是唯一的解决方案,还是只解决我的问题?因为在以前的版本中,我们只需要执行
getCell
来访问值,而我期望这样的解决方案。对于这个疑问,请不要难过。@Rahul:在使用
格式化程序:“选择”
之前,您用文本而不是值填充了网格。现在,您用值填充列,
setCell
getCell
也使用这些值。顺便说一下,我看到了从单元格中获取文本的另一种方法。您可以使用
$.jgrid.getDataFieldOfCell.call(this,$grid.jqGrid(“getGridRowById”,rowid),p.iColByName.delegator)。text()
。可以使用helper方法
$.jgrid.getDataFieldOfCell
以网格中显示的形式从网格中获取数据。(
var rowid=p.selrow
beforeShowForm: function ($form) {
    var $self = $(this), p = $self.jqGrid("getGridParam"),
        val = $self.jqGrid("getCell", p.selrow, "Consignee"),
        cm = p.colModel[p.iColByName.Consignee],
        editVal = cm.editoptions.value;
    $("td.delmsg", $form[0]).html("Do you really want delete the <b>   Consignee: " +
        editVal[val] + "</b>?");
}
beforeShowForm: function ($form) {
    var $self = $(this), p = $self.jqGrid("getGridParam"),
        tr = $self.jqGrid("getGridRowById", p.selrow),
        $cell = $.jgrid.getDataFieldOfCell.call(this, tr, p.iColByName.Consignee);

    $("td.delmsg", $form[0]).html("Do you really want delete the <b>   Consignee: " +
        $cell.text() + "</b>?");
}