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;

別の方法として、オブジェクトを 2 つの列に分割して、 で値に直接アクセスできるようにすることもできますgetCol

于 2012-10-11T08:05:06.433 に答える