jqgrid中getcol函数返回的值

时间:2012-10-11 04:21:38

标签: javascript json jqgrid subgrid

我有一个使用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时的值,但是没有得到任何示例。登记/> 如果有任何示例或有任何指向解决方案的指针,将不胜感激。

1 个答案:

答案 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直接访问这些值。