0

2つのバージョンのコードを試しています。1つはローカルデータ型で、もう1つはjsonデータ型です。私がやろうとしているのは、この行を使用してデータをコンソールログに出力することだけですconsole.log(texts)。ただし、これはデータ型がローカルの場合にのみコンソールに出力されます。以下は、ローカルデータ型とjsonデータ型の2つのバージョンのコードです。どちらのバージョンも類似していますが、dataTypesのみが変更されています。someFunc最後にデータを印刷するように呼びかけています

ローカルデータ型

$(document).ready(function() {
    var mydata = [
     {id: "1", name: "someone"}
    ]
    someFunc = function(columnName) {
         var texts = jQuery("#myGrid").jqGrid('getCol',columnName);
         console.log(texts); //is printing only when datatype is local
    };
    jQuery("#myGrid").jqGrid(
        {
            autoencode:true,
            mtype: 'GET',
            datatype : 'local',
            data: mydata,                   
            colModel : [ 
                {name: 'name', index: 'Name'}
            ]
    });
    jQuery("#mygrid").jqGrid('navGrid', '#pager', {
        edit : false,
        add : false,
        del : false,
        search : true
    }, {}, {}, {}, {
        sopt : [ 'eq', 'ne', 'lt', 'gt', 'cn', 'bw', 'ew' ],
        closeOnEscape : true,
        multipleSearch : true,
        closeAfterSearch : true
    });   
    someFunc('name');
});     

Jsonデータ型

$(document).ready(function() {
    someFunc = function(columnName) {
         var texts = jQuery("#myGrid").jqGrid('getCol',columnName);
         console.log(texts); //is printing only when datatype is local
    };
    jQuery("#myGrid").jqGrid(
        {
            url : 'someUrlToGetData',
            autoencode:true,
            mtype: 'GET',
            datatype: 'json',

            colModel : [ 
                {name: 'name', index: 'Name'}
            ]
    });
    jQuery("#mygrid").jqGrid('navGrid', '#pager', {
        edit : false,
        add : false,
        del : false,
        search : true
    }, {}, {}, {}, {
        sopt : [ 'eq', 'ne', 'lt', 'gt', 'cn', 'bw', 'ew' ],
        closeOnEscape : true,
        multipleSearch : true,
        closeAfterSearch : true
    });   
    someFunc('name');
});     
4

1 に答える 1

1

URLからのサーバー応答を含める必要があります'someUrlToGetData'someFuncさらに、変数を割り当てる前に、変数を宣言する必要があります。var someFunc = function(columnName) { ... };

主な質問:サーバーがjqGridのJSONデータを正しく生成する場合(ドキュメントsomeFunc('name');を参照)、コールバック内の呼び出しを移動する必要がありloadCompleteます。

jQuery("#myGrid").jqGrid({
    url : 'someUrlToGetData',
    autoencode:true,
    mtype: 'GET',
    datatype: 'json',
    colModel : [ 
        {name: 'name', index: 'Name'}
    ],
    gridview: true,
    loadComplete: function () {
        someFunc('name');
    }
});

問題は、コードが非同期で機能することです。グリッドを作成すると、jqGridのオプションでdatatype: "json"指定されたURLに対してAjax呼び出しが行われます。url

于 2012-11-12T15:42:02.843 に答える