0

私はjqGridに取り組んでいます。戻りjsonは

{"total":1,"page":1,"records":2,"rows":[{"projectId":"1022","name":"john"}]}

次に、私が呼び出す関数で

 var jsongrid = eval("("+data+")");                  
 var thegrid = jQuery("#projectList")[0];                       
 thegrid.addJSONData(jsongrid);

しかし、それは私にエラーを与えます:オブジェクトはnullまたは未定義です。理由がわからない。私はjsonリーダーを使用しませんでした。

ところで、set メソッドを使用して「合計」、「ページ」、「レコード」を設定する方法を知っていますか?

4

1 に答える 1

2

グリッドが作成される前にaddJSONData、メソッドを呼び出そうとしていると思います。jQuery("#projectList").jqGrid({...});

の使用法addJSONDataは事実上常に不要です(ここでの主題についての私の最初の投稿からの1つを参照してください)。同じように、あなたは決してeval邪悪な方法を使うべきではありません。代わりにjQuery.parseJSONまたはJSON.parseを使用します。

私はあなたがdatatype: 'json'あなたの問題を解決するために使うべきだと思います。ケースで他のjqGridオプションをどのように使用するかを示すために、さらにコードを投稿する必要があります。

更新:前の質問から、[検索]ボタンをクリックしたフォームからサーバーに追加のデータを送信したいようです。この場合、コードを次のように変更することをお勧めします

var $grid = $("#projectList");

$grid.jqGrid({
    url: 'user595234.json',
    datatype: "json",
    serializeGridData: function (data) {
        return $.param(data) + '&' + $("#project_search_form").serialize();
    },
    jsonReader: {id: "projectId", repeatitems: false},
    colNames: ['ID', 'Name'],
    colModel: [
        {name: 'projectId', width: 255},
        {name: 'name', width: 255}
    ],
    rowNum: 10,
    rowList: [10,20,30],
    pager: '#projectPager',
    sortname: 'projectId',
    viewrecords: true,
    sortorder: "desc",
    caption: "Simple data manipulation",
    height: "auto"
}).jqGrid("navGrid", "#projectPager", {edit: false, add: false, del: false});

$("#search").click(function () {
    $grid.trigger("reloadGrid", [{page: 1}]);
});

デモでは、 jQuery.serializeの使用例からフォームを取得し、少し変更します。必要なデータを表示します

ここに画像の説明を入力してください

さらに、FiddlerまたはFirebugに関して簡単に確認できるように、URLには以下のような追加のパラメーターが追加されます。

...?_search=false&nd=1336057299806&rows=10&page=1&sidx=projectId&sord=desc&a=1&b=2&c=3&d=4&e=7&f=8 

標準パラメータ

_search=false&nd=1336057299806&rows=10&page=1&sidx=projectId&sord=desc

フォームからのパラメータが追加されます

a=1&b=2&c=3&d=4&e=7&f=8

一部のシナリオでは、代わりにjQuery.serializeArrayを使用できます。これにより、データを別の形式(JSONなど)でシリアル化したり、データを別の形式(ここを参照)に変換したりできます。これは、 $ 。extendを使用して標準のjqGridパラメーターと簡単にマージできます。

于 2012-05-02T05:14:30.670 に答える