如何通过ajax在jqgrid中加载数据(json)?

时间:2013-02-04 17:59:25

标签: ajax json jqgrid

我需要在ajax调用后填充jqgrid。

我有一个函数(在java servelet中),它返回这个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"}]

data: c, datatype: "local",

有效,但如果我从url获取:'/ project / loadnotespese.do',它就不起作用了。 有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

如果您使用datatype: "local",则会使用选项localReader。顺便说一下,repeatitems: false的值localReader默认值(请参阅the documentation)。因此,在使用datatype: "local"的情况下,您可以从选项列表中删除当前选项localReader: { repeatitems: false }

另一方面,如果您使用datatype: "json" ,则会使用其他选项 jsonReaderrepeatitems的{​​{1}}属性的默认值为jsonReader(请参阅the documentation)。所以你必须添加

repeatitems: false

在jqGrid选项列表的情况下。之后应该成功填充网格。

另一个重要的想法是,要知道的是在数据行的每个项目中指定附加jsonReader: { repeatitems: false } 属性。 id值在整个页面上必须是唯一的,并且它将用作网格主体的行(id)元素的id属性的值。如果行项的某些其他属性可用作唯一ID,则可以在<tr>中包含其他设置,或在jsonReader中的列的相应定义中添加key: true属性。例如,如果可以将colModel解释为可以使用的rowid

clienteCode

更新:您应该另外使用

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

root: function (obj) { return obj; } 内(见here)。所以最后的jsonReader应该是

jsonReader