0

我从 servlet 获得了 json 对象数据,如下所示:

{"persondetails":[{"salary":"20000","sname":"XXX","sno":"1"},
{"salary":"50000","sname":"yyy","sno":"2"},
{"salary":"20300","sname":"bbb","sno":"3"},
{"salary":"20100","sname":"chan","sno":"4"},
{"salary":"40100","sname":"lorn","sno":"5"},
{"salary":"10100","sname":"san","sno":"6"},
{"salary":"60100","sname":"sun","sno":"7"},
{"salary":"20200","sname":"chan","sno":"8"},
{"salary":"10200","sname":"san","sno":"9"},
{"salary":"40200","sname":"lorn","sno":"10"}]}

现在,我必须使用 dojo 将其放入数据网格中。我试过了,但我得到一个空白页。请检查一下并帮助我理解我做错了什么。

这是我的代码:

var grid, dataStore, store;
    require([ "dojox/grid/DataGrid", "dojo/store/Memory",
            "dojo/data/ObjectStore", "dojo/request/xhr", "dojo/dom",
            "dojo/dom-construct", "dojo/json", "dojo/on", "dojo/domReady!" ],
            function(DataGrid, Memory, ObjectStore,xhr, dom, domConst, JSON, on) {
                xhr("myserveraddress:7080/GridExample/login", {
                    handleAs : "json"
                }).then(
                        function(data) {


                            domConst.place("<p>response: <code>"
                                    + JSON.stringify(data) + "</code></p>",
                                    "output");

                            store = new Memory({
                                data : data.items
                            });
                            dataStore = new ObjectStore({
                                objectStore : store
                            });

                            grid = new DataGrid({
                                store : dataStore,
                                query : {
                                    id : "*"
                                },
                                structure : [  {
                                    name : "SNO",
                                    field : "sno",
                                    width : "100px"
                                },{
                                    name : "SNAME",
                                    field : "sname",
                                    width : "100px"
                                },{
                                    name : "SALARY",
                                    field : "salary",
                                    width : "200px"
                                } ]
                            }, "grid");
                            grid.placeAt("myGrid");
                            grid.startup();                 

                        }, function(err) {
                            alert("error");
                        }, function(evt) {

                        });
            });
4

1 回答 1

0

您需要在 persondetails 中为网格提供数组。

所以你的商店应该是这样的::

data.items.persondetails

同样在您的网格中,您不需要查询参数,除非您想要某个行

sno:"9" 

只会显示 sno = 9 的行

小提琴:: http://jsfiddle.net/theinnkeeper/57pZf/

于 2013-09-13T14:34:31.363 回答