0

我有一个使用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 时它只返回值,但无法获得任何示例。
如果有任何示例或有任何指向解决方案的指针,将不胜感激。

4

1 回答 1

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

于 2012-10-11T08:05:06.433 回答