我有一个使用jqgrid
的网格。我需要将url:
返回的一些数据存储在局部变量中,以便我可以在subgrid
中显示它。为此,我将该列添加为主网格中的隐藏列,其格式为json
:
"Details":[{"Name":"ttt", "Quantity":"12"}] .
然后在loadcomplete:函数中,我使用
将值保存到变量中var griddata = $("#grid').getCol('Details', false);
现在当我访问griddata[0]
时,我得到一个object
对象。我试图解析它以正确获取值,但无济于事。我试过了:
griddata[0].Details.Name
或
griddata[0].Details.0.Name
或
griddata[0].Name,
但都失败了。我想如果getcol()
函数返回的数据,我错过了格式。我查看了该方法的文档,它说它只返回我们指定false时的值,但是没有得到任何示例。登记/>
如果有任何示例或有任何指向解决方案的指针,将不胜感激。
答案 0 :(得分:1)
如果您检查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
直接访问这些值。