我有一个使用jqgrid
的网格。我需要将url:
返回的一些数据存储在局部变量中,以便我可以在subgrid
中显示它。为此,我将该列添加为主网格中的隐藏列,其格式为 json
:
"Details":[{"Name":"ttt", "Quantity":"12"}] .
然后在加载完成:函数中,我使用
var griddata = $("#grid').getCol('Details', false);
现在当我访问griddata[0]
时,我得到了一个object
对象。我试图解析它以正确获取值,但无济于事。我试过了:
griddata[0].Details.Name
或
griddata[0].Details.0.Name
或
griddata[0].Name,
但都失败了。我想如果 getcol()
函数返回的数据,我错过了格式。我查找了有关该方法的文档,它说当我们指定 false 时它只返回值,但无法获得任何示例。
如果有任何示例或有任何指向解决方案的指针,将不胜感激。
如果您检查griddata[0]
的类型(例如使用运算符typeof
您将看到它具有string
的类型 - 这是因为您获得的值是toString()
您传递的对象的结果。原因是jqGrid处理值的方式。
如果要将 JSON 存储为值,则需要将其完全字符串化:
"Details": "[{"Name":"ttt", "Quantity":"12"}]"
现在,您可以将这些字符串值反序列化为如下所示的对象:
var griddata = $.map($("#grid").jqGrid('getCol', 'Details', false), function(value) {
return JSON.parse(value);
});
之后,您可以按照所需的方式访问对象:
var name = griddata[0].Name;
var quantity = griddata[0].Quantity;
作为替代方法,您可以将对象拆分为两列,以便可以使用 getCol
直接访问这些值。