7

jqGrid 3.6.4 と jquery 1.4.2 を使用しています。私のサンプルでは、​​次のjsonデータ形式を取得しています&これらのjsonデータをjqgridの行にマップしたい

{
"page": "1",
"total": 1,
"records": "6",
"rows": [
    {
        "head": {
            "student_name": "Mr S. Jack ",
            "year": 2007

        },
        "sub": [
            {
                "course_description": "Math ",
                "date": "22-04-2010",
                "number": 1,
                "time_of_add": "2:00",
                "day": "today"
            }
        ]

      }
]
}

私のjqgridコードは次のとおりです

jQuery("#"+subgrid_table_id).jqGrid({
url:"http://localhost/stud/beta/web/GetStud.php?sid="+sid,
dtatype: "json",
colNames: ['Stud Name','Year','Date'.'Number'],
colModel: [ {name:'Stud Name',index:'student_name', width:100, jsonmap:"student_name"},
{name:'Year',index:'year', width:100, jsonmap:"year"},
{name:'Date',index:'date', width:100, jsonmap:"date"},
{name:'Number',index:'number', width:100, jsonmap:"number"}
],
height:'100%',
jsonReader: { repeatitems : false, root:"head" },
});

だから今問題は、私のデータ、すなわち学生名と年が「頭」の下にあるので、jqgridはこれら2つのフィールドを見つけることができるということです。同時に、他の2つの列の値、つまりDateとNumberは「サブ」の下にあり、それらの列でさえjqgridでマップできません

JQGridでこれらの属性を見つける方法を教えてください。

ありがとう

4

1 に答える 1

15

まず、投稿されたコードには、dtatype: "json"代わりにdatatype: "json". コードの末尾の " " の代わりに " " との},});代わりに. この明らかなバグを修正した後、値を変更する必要があります。これがあなたの主な質問でした。固定コードは次のようになります。}});colNames: ['Stud Name','Year','Date'.'Number']colNames: ['Stud Name','Year','Date','Number']jsonmap

jQuery("#"+subgrid_table_id).jqGrid({
    ...
    datatype: 'json',
    colNames: ['Stud Name','Year','Date'.'Number'],
    colModel: [
        {name:'student_name', width:100, jsonmap:"head.student_name"},
        {name:'year', width:100, jsonmap:"head.year"},
        {name:'date', width:100, jsonmap:"sub.0.date"},
        {name:'number', width:100, jsonmap:"sub.0.number"}
    ],
    jsonReader: { repeatitems:false, root:"rows" }
});

" " に修正rootし、JSON ドット表記rowsで使用する必要があります( http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrifying_data#json_dot_notationを参照)。JavaScript では と同じなので、 " " のような少し変わった表記を使用します。それは今動作します。jsonmapsub.0.numbersub.0.numbersub[0].number

受け取る JSON データの構造についてもう一度考えてみることをお勧めします。(あなたへの私の以前のコメントを参照してください):「サブ」要素は本当に常に1つの要素を持つ配列ですか、それともサブグリッドを使用したいですか?おそらく、データを からsub:[{"":"", ...}]に変更する必要がありsub:{"":"", ...}ます。行 ID として何を使用しますか? student_name? 次に、定義に追加id: "head.student_name"するjsonReaderkey: true、列の定義にプロパティを追加しますstudent_name。それとも、JSON データに含めるのを忘れていませんか?

そして最後の提案。http://trirand.com/blog/jqgrid/jqgrid.htmlを開いて、ツリーの左側にあるブランチ「データ マッピング」\「データ最適化」を開くと、名前の代わりに配列のみを使用する例が表示されます。 JSON の要素。このようなデータは最小サイズになり、サーバーからクライアントへより迅速に転送できます。データには、まったく使用しないいくつかのフィールド (「course_description 」など) があります。そのため、サーバー コードを変更できる場合は、データ転送速度を最適化してみてください。

于 2010-04-24T23:45:09.453 に答える