我正在创建一个网格,用于绘制一个格式如下的JSON数据源:
[{"user":{"username":"foo","url":"bar"}},
[{"product":{"name":"banana","price":"85"}},
{"product":{"name":"peach","price":"66"}},
{"product":{"name":"strawberry","price":"78"}}
]
]
但我无法弄清楚如何告诉datagrid使用产品的内容来填充datagrid。这是我的数据网格代码:
<script>
require(["dojo/store/JsonRest"], function (JsonRest) {
myStore = new JsonRest({ target: 'myurl', handleAs: 'json'
});
});
require(["dojox/grid/DataGrid", "dojo/data/ObjectStore", "dojo/domReady!"
], function (DataGrid, ObjectStore) {
grid = new DataGrid({
store: dataStore = new ObjectStore({ objectStore: myStore }),
structure: [
{ name: "Procuct", field: "name", width: "200px" }
]
}, "grid3");
grid.startup();
});
</script>
<div id="grid3"></div>
我没有收到任何错误,但我看不到网格已填充。
这与THIS类似,但数据结构略有不同。
答案 0 :(得分:0)
我认为它与你的json结构有关。 jsonArray的第一部分是一个对象,第二部分是一个数组:
[对象,ArrayOfProducts]
如果将数据隐藏在数组中的数组中,DataGrid应该如何找到必要的数据?然后在属性产品内。 尝试通过json传递简单的东西,如:
[{"name":"banana","price":"85"},
{"name":"peach","price":"66"},
{"name":"strawberry","price":"78"}]
答案 1 :(得分:0)
您是否尝试过grid.render Array(dataStore)以使用内容填充网格?
答案 2 :(得分:0)
一个选项是在dataStore.query()调用之前将新属性附加到json对象。这可以通过dojo/aspect来完成。有关其他示例,请参阅article。
aspect.before(dataStore, "query", function(items) {
items.forEach(function(item) {
//Do something here. I'll combine two properties.
item.newProperty = item.propertyValueA + "-" item.propertyValueB;
return item;
});
return items;
});
当调用dataStore.query()时,上面调用上面的函数。这会导致将新属性添加到json对象。在上面的示例中,newProperty是propertyValueA和propertyValueB的串联。
这可以让你根据需要操作json。