1

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

我有一个返回此 json 格式的函数(在 java servelet 中):

[{"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' 获取,它就行不通了。有什么帮助吗?

4

1 回答 1

1

如果你使用datatype: "local"该选项localReader将被使用。顺便说一下,该值repeatitems: false是(请参阅文档)的默认值。因此,在使用情况下,您可以从选项列表中删除当前选项。localReaderdatatype: "local"localReader: { repeatitems: false }

另一方面,如果您使用datatype: "json" 另一个选项 jsonReader将被使用。repeatitems属性的默认值jsonReaderrepeatitems: false(参见文档)。所以你必须添加

jsonReader: { repeatitems: false }

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

另一个重要的想法是在数据行的每个项目中指定附加id属性。该id值在整个页面中必须是唯一的,它将用作网格体id的 rows ( ) 元素的属性值。<tr>如果行项目的某些其他属性可以用作唯一 id,您可以在 中包含附加设置或在列的相应定义中jsonReader添加属性。例如,如果可以解释为您可以使用的 rowidkey: truecolModelclienteCode

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

更新:您应该另外使用

root: function (obj) { return obj; }

里面jsonReader(见这里)。所以决赛jsonReader应该是

jsonReader: {
    repeatitems: false,
    id: "clienteCode",
    root: function (obj) {
        return obj;
    }
}
于 2013-02-04T19:46:06.037 回答