我的Datagrid没有填充商店
我的休息电话会返回: { “onlineUsers”:[], “offlineUsers”:[ “123.456.7.890:8080”]}
My code:
require([ "dojo/store/JsonRest",
"dojo/store/Memory",
"dojo/store/Cache",
"dojox/grid/EnhancedGrid",
"dojox/grid/enhanced/plugins/Pagination",
"dojo/data/ObjectStore",
"dojo/dom-attr",
"dojo/domReady!"],
function(JsonRest, Memory, Cache, EnhancedGrid, Pagination, ObjectStore, domAttr){
var store = new dojo.store.JsonRest({target:"/Url/rest/onlineusers/all"});
var dataStore = new dojo.data.ObjectStore({objectStore: store});
var grid = new EnhancedGrid({
id: 'grid',
store: dataStore,
structure: [
{name: "Offline Users", field: "offlineUsers", width: "100px"}
]
}, "gridDiv");
grid.startup();
});
我在日志中看到了这个: [object Object]
我也看到了这个: [18:12:57.822]不推荐使用getAttributeNode()。请改用getAttribute()。 @ http://ajax.googleapis.com/ajax/libs/dojo/1.8.4/dojo/dojo.js:146
我做错了什么?
答案 0 :(得分:1)
那是因为你的数据结构错了。我想你想创建一个网格,每个主机/地址在网格中列为一行?
商店的数据结构应该是一个对象数组。您使用字符串数组定义了一个对象,该字符串不符合所需的结构。有关REST服务应实现的格式的更多信息,请参阅RFC 2616 document。
您有三种选择:
第三种解决方案看起来像:
var data = {"onlineUsers":[],"offlineUsers":["123.456.7.890:8080"]}; // Retrieve with an AJAX request
var offlineUsers = array.map(data.offlineUsers, function(user) {
return {
host: user
};
});
var store = new Memory({ data: offlineUsers });
var dataStore = new ObjectStore({objectStore: store});
然后,您可以将网格的structure
属性更改为:
[
{name: "Offline Users", field: "host", width: "100px"}
]
我还做了一个上面例子的JSFiddle,你可以看到here。