2013-02-04 57 views
1

我需要在ajax的調用之後填充jqgrid。如何通過ajax在jqgrid中加載數據(json)?

我有一個函數(在Java小服務程序)返回該JSON格式:

[{"citta":"XXXX","via":"XXX","telefono":"1111-11111","provincia":"XX","clienteDesc":"Prova","clienteCode":"XXXXX"}] 

,我使用此代碼爲jqGrid的:

   $("#clienti-navgrid").jqGrid({ 
          //data: c 
          //datatype: "local" 
          datatype: "json", 
       url: '/project/loadnotespese.do', 
       colNames:['Codice Cliente','Descrizone Cliente','Via','Città','Provincia','Telefono'],     
       colModel:[ 
         {name:'clienteCode', index:'clienteCode', width:'10', sortable:false}, 
         {name:'clienteDesc', index:'clienteDesc', width:'20', sortable:false}, 
         {name:'via', index:'via', width:'30', sortable:false}, 
         {name:'citta', index:'citta', width:'20', sortable:false}, 
         {name:'provincia', index:'provincia', width:'10', sortable:false}, 
         {name:'telefono', index:'telefono', width:'10', sortable:false} 
       ], 
       rowNum:500, 
       autowidth:true, 
       height:'auto', 
       recordtext:"Ordini trovati {2}", 
       emptyrecords:"Nessun risultato", 
       viewrecords: true, 
       caption: 'Tabella Clienti',   
       localReader : { 
            // 
        repeatitems: false, 
       } 
      });//jqGrid 

,如果我把

var c = [{"citta":"XXXX","via":"XXX","telefono":"1111-11111","provincia":"XX","clienteDesc":"Prova","clienteCode":"XXXXX"}] 

and

data: c, datatype: "local", 

工作,但如果我從網址:'/project/loadnotespese.do',它不起作用。 有什麼幫助嗎?

+0

我忘了在'jsonReader'中提到'root'。請參閱** UPDATED **部分我的答案。 – Oleg

回答

1

如果您使用datatype: "local"將使用選項localReader。順便說一下,值repeatitems: false默認值值爲localReader(請參閱the documentation)。因此,如果使用datatype: "local",您可以從選項列表中刪除當前選項localReader: { repeatitems: false }

另一方面,如果您使用datatype: "json"另一個選項jsonReader將被使用。 jsonReaderrepeatitems屬性的默認值是repeatitems: false(參見the documentation)。所以你必須添加

jsonReader: { repeatitems: false } 

在這種情況下jqGrid選項的列表。之後,網格應該成功填充。

另外一個重要的想法是知道附加的id屬性在每一行數據的屬性。 id值在整個頁面中必須是唯一的,並且將用作網格體的行(<tr>)元素的id屬性的值。如果行項目的某些其他屬性可以用作唯一標識,則可以在jsonReader中包含其他設置,或者在colModel的列中的相應定義中添加key: true屬性。例如,如果clienteCode可以被解釋爲ROWID可以使用

jsonReader: { repeatitems: false, id: "clienteCode" } 

修訂:你應該用另外

root: function (obj) { return obj; } 

jsonReader內(見here)。所以最後的jsonReader應該是

jsonReader: { 
    repeatitems: false, 
    id: "clienteCode", 
    root: function (obj) { 
     return obj; 
    } 
} 
+0

您好,請回復。我會設置jsonReader:{repeatitems:false,id:「clienteCode」},但仍然不填充數據在jqgrid –

+0

@GiacomoSavioli:你試過使用'root:function(obj){return obj; }'(見我答案的更新部分) – Oleg

+0

ty非常多!其作品!:D –