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>?");
}