0

我想向服务器发出请求(同步)以填充 jqGrid。我这样做了:

$table.jqGrid({ 
                    datatype: "json",
                    url:'takepage/page=1',
                    mtype: 'GET',
                    ajaxSubgridOptions: { async: false },
                    colNames:['Result','Test'], 
                    colModel:[ {name:'result',index:'result',width:120}, 
                               {name:'test',index:'test', width:120}
                              ], 
                     pager: "#"+pager,
                     caption: "TESTjqGrid sync request to server",

                     jsonReader: {
                            repeatitems: false,
                            page: function(obj) { 
                                return obj.page; 
                            },
                            total: function(obj) { 
                                return obj.total; 
                            },
                            root: function (obj) { 
                                console.log(obj);
                                return obj; 
                            },
                            records: function (obj) { 
                                console.log(obj.rows.length);
                                return obj.rows.length; 
                            }

                        }

                }).jqGrid('navGrid', "#"+pager, {
                    add:    false,
                    edit:   false,
                    del:    false,
                    search: false,
                    refresh:false
                });

服务器的json响应是这样的:

{"total":1,"page":1,"rows":[{"result":null,"test":"val"}],"records":1}

错误在哪里?谢谢!

4

1 回答 1

1

您应该使用jsonReader与您发布的数据相对应的。对于您发布的 JSON 数据,您应该使用jsonReader: {repeatitems: false}. 来自的许多其他选项jsonReader是正确的,但root都是错误的。您必须从中删除 root属性jsonReader或将其更改为root: "rows"root: function (obj) { return obj.rows; }(的用法return obj;为假)。

loadonce: true此外,如果您的服务器未实现服务器端数据分页,我建议您使用。以任何方式选择gridview: trueheight: "auto"推荐。

于 2013-04-09T09:08:27.473 回答