1

特定の列の生のJSONをjqGridに表示させたいユースケースがあります。サーバーから次の JSON が送信されています。

{"items":[
    {
        "code":"ABC123",
        "description":"",
        "custom_data":{"items":[
            {"prop1":"val1","prop2":"val2"},
            {"prop1":"val3","prop2":"val4"}
        ]}
    },
    {"code":"ABC124","description":"","custom_data":[]},
    ...,
]}

そして次のようなjqGrid構成:

{
url:'/api/somewhere',
datatype: "json",
jsonReader : {
    root:"items",
    repeatitems: false,
    id: "code"
},
colNames:['Code',
          'Description',
          'Data',],
colModel:[
    {   
            name:'code', index:'code', width:100, hidden:false, 
        edittype:'text', 
        editable: true, 
        editrules:{required:true, edithidden:true}, 
        editoptions: {readonly:false}
    },
    {   
            name:'description', 
            index:'description', 
            width:250, 
            editable:true, 
            edittype:'text', 
            editrules:{required:true} 
        },
    {
    name:'custom_data',
    index:'custom_data', 
    width:100, 
    hidden:true, 
    sortable:false, 
    editable:true, 
    edittype:'text', 
    editrules:{required:false, edithidden:true}
    },
],
    ...,

グリッドには OK が表示されますが、custom_data 列は [object Object] として表示されます。必要なのは、loadComplete イベントを使用して各行オブジェクトの custom_data オブジェクトで JSON.stringify を呼び出してみた生の JSON 文字列を表示することですが、うまくいきませんでした。custom_data オブジェクトから null 値を削除したいので、とにかく GET の後に何らかのデータ操作を行う必要があります。

私のユーザーは未加工の JSON の読み取りと編集に慣れているため、POST される未加工の JSON を受け入れるための追加/編集フォームも必要です。

オブジェクトを文字列に変換するために間違ったイベントを使用しているだけなのか、それとも何か他のことが起こっているのかはわかりません。

4

1 に答える 1

1

できることは、"custom_data"列のカスタムフォーマッターの使用です

formatter: function (cellValue, options, rawData) {
    return cellValue.items ? JSON.stringify(cellValue.items) : "";
}

データを表示するために、列のデモ hiddenプロパティを変更しました"custom_data"true

ここに画像の説明を入力

userdataさらに、非表示の列の代わりに使用して、追加のカスタム データを保存することを検討できます。の使用方法だけでなく、フォーム サブグリッドに追加データを表示する方法を示す回答をさらに読むことをお勧めします。userdata

于 2013-03-18T17:59:34.530 に答える