2012-11-12 34 views
0

我正在嘗試兩種版本的代碼,一種使用本地數據類型,另一種使用json數據類型。我所要做的只是將數據打印到控制檯日誌中,使用此行console.log(texts)。但是,只有當數據類型是本地時,纔會打印到控制檯。以下是兩種版本的代碼,本地數據類型和json數據類型。這兩個版本都是相似的,只更改了dataTypes。我到底調用someFunc打印數據當數據類型爲json時,jqGrid不提取行數據,但在數據類型爲本地時工作正常。

本地數據類型

$(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'); 
});  

回答

1

您應該包括URL 'someUrlToGetData'服務器的響應。此外,您應該分配給它之前聲明變量someFuncvar someFunc = function(columnName) { ... };

爲了您的主要問題:如果服務器正確產生了jqGrid的JSON數據(見the documentation),那麼你應該只是移動的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'); 
    } 
}); 

問題是代碼異步工作。如果您創建了具有datatype: "json"的網格,則將對jqGrid的url選項指定的URL進行Ajax調用。

+0

好吧,這是有效的,是有道理的。謝謝! – birdy

+0

以下你的答案http://stackoverflow.com/a/4102155我想在過濾器欄中創建一個下拉列表。不過,我通過網址獲取我的數據。下拉是通過獲取一列的唯一記錄,然後將它們作爲選項存儲在下拉列表中。但是,如果我從URL獲取數據,並且只在第一次獲得前20條記錄(當用戶轉到下一頁時將獲取其餘記錄)。因此,我的下拉菜單中不會包含所有唯一記錄,但只有前20條記錄的唯一記錄。有沒有辦法解決這個問題?如果這不是乾淨的,我會提出一個新問題 – birdy

+0

@birdy:我想問題只是分頁數據。通常會在網格中創建一個尋呼機。你可以在網格中包含'toppager:true'。然後您將能夠按下尋呼機上的「下一步」按鈕來查看接下來的20行數據。或者,您可以包含'rowNum:10000'選項,將每頁默認值20行增加到10000。 – Oleg

相關問題