0

非表示フィールドに保存されているデータを jqgrid に入力しようとしています。サーバーデータ(データタイプ= json)からグリッドにデータを入力する方法を試してみました。しかし、ここではこの方法が必要です。これが私がしたことです:

コントローラ:

      DataTable myTable= MyData.getAllData();

      string s = JsonConvert.SerializeObject(myTable);

       model.GridData = s;

       return this.View(model);

意見:

var mydata = $('#GridData').val();

ここで alert(mydata ) を使用すると、

[{ "id": 1, "ToCurrencyID": 2, "currency": "アラブ首長国連邦", "country": "アラブ首長国連邦ディルハム", "shortName": "AED", "ExchRate": 20.000}]

そして、ここにjqgridコードがあります:

    jQuery(document).ready(function () {
        jQuery("#list").jqGrid({ data: mydata,
            datatype: "local",
            height: 150,
            width: 600,
            rowNum: 10,
            rowList: [10, 20, 30],
            colNames: ['Sl#', 'currencyId_Hidden', 'Country', 'Currency', 'Short Name', 'Exchange Rate'],
            //columns model/*
            colModel: [
                        { name: 'id', index: 'id', align: "left", sortable: false, width: '34px' },
                        { name: 'ToCurrencyID', index: 'ToCurrencyID', sortable: false, align: "left", hidden: true },
                        { name: 'currency', index: 'currency', align: "left", sortable: false, width: '366px' },
                        { name: 'country', index: 'country', align: "left", sortable: false, width: '366px' },
                        { name: 'shortName', index: 'shortName', width: '141px', sortable: false, align: "left" },
                        { name: 'ExchRate', index: 'ExchRate', width: '382px', sortable: false, align: "right" }
                  ],
            pager: "#pager",
            loadonce: true,
            viewrecords: true,
            caption: "Contacts"
        });

    });

問題は、グリッドにデータが取り込まれていないことです。

しかし、私が直接使用すると、

var mydata=[{ "id": 1, "ToCurrencyID": 2, "currency": "アラブ首長国連邦", "country": "アラブ首長国連邦ディルハム", "shortName": "AED", "ExchRate": 20.000}];

それは、正常に動作しています。

jqgrid には、単なる文字列ではなく、json 配列自体が必要だと思います。助言がありますか?

4

2 に答える 2

1

あなたが使用しているコントローラーのコードは非常に疑わしいようです。を使用this.View(model)して結果を返し、 に関して手動で JSON シリアル化を行いますJsonConvert.SerializeObject。その代わりに、コントローラー アクションからreturn Json(yourData, JsonRequestBehavior.AllowGet);戻るために使用する必要があります。jqGridの代わりにJsonResultオプションを使用する必要があります。datatype: "json", url: UrlOfControllerActiondatatype: "local", data: mydata

サーバー側のデータのページングを実装せずにすべてのデータを一度に返したい場合は、loadonce: trueにオプションを追加して使用する必要がありますdatatype: "json"jsonReader返されるデータの正確な形式に依存し、使用する jqGrid のバージョンに依存して、サーバーの JSON 応答からデータを取得する方法を jqGrid に通知するために使用する必要がある場合があります。

サーバー側のページング、データの並べ替え、およびフィルタリングを実装する必要がある場合は、対応するコードの例を回答で見つけることができます。

于 2013-06-20T11:46:19.910 に答える
0

mydata(現在は文字列変数です)をJsonに変換する必要がありました。そして、すべてがうまくいきます。

      jQuery("#list").jqGrid({ data: $.parseJSON(mydata),
                datatype: "local",
                height: 150,
                width: 600,
                rowNum: 10,
                rowList: [10, 20, 30],
               .. 
               ..
              });
于 2013-06-21T04:38:05.133 に答える