带有dojo.store.Memory的dojox.grid.TreeGrid
我想将带有dojo.store.Memory的dojox.grid.TreeGrid,dojo,dojox.grid,Dojo,Dojox.grid,我想将dojox.grid.TreeGrid与dojo.store.Memory一起使用。(这是旧代码。以前我使用了dojo.data.ItemFileWriteStore。但是我的存储有问题,所以我想尝试一下较新的内存存储。)但是在添加子项时网格无法正确更新。我的做法如下: require(['dijit/tree/ForestStoreModel', 'dojo/data/ObjectStore', 'dojo/store/Memory', 'dojo/store/Observ
dojox.grid.TreeGrid
与dojo.store.Memory
一起使用。(这是旧代码。以前我使用了dojo.data.ItemFileWriteStore
。但是我的存储有问题,所以我想尝试一下较新的内存存储。)但是在添加子项时网格无法正确更新。我的做法如下:
require(['dijit/tree/ForestStoreModel',
'dojo/data/ObjectStore',
'dojo/store/Memory',
'dojo/store/Observable',
'dojox/grid/TreeGrid',
'dojo/domReady!'], function(ForestStoreModel,
ObjectStore,
Memory,
Observable,
TreeGrid) {
var data = [
{
id: '1',
name: 'one',
value: 1,
toplevel: true
},
{
id: '2',
name: 'two',
value: 2,
toplevel: true
}
];
var store = Memory({
data: data,
getChildren: function(object)
{
return object.children;
}
});
var observableStore = Observable(store);
var objectStore = new ObjectStore({ objectStore: observableStore });
var model = new ForestStoreModel({
store: objectStore,
query: { toplevel: true },
childrenAttrs: [ 'children' ],
mayHaveChildren: function(parent)
{
return parent.children && parent.children.length > 0;
}
});
var structure = [
{ name:'name', field: 'name', width: '50%' },
{ name: 'value', field: 'value', width: '50%' },
];
var grid = new TreeGrid({
treeModel: model,
structure: structure,
autoHeight: true
}, 'gridNode');
grid.startup();
function add(object, parentId)
{
store.put(object);
var parent = store.get(parentId);
if(!parent.children) {
parent.children = [];
}
parent.children.push(object);
store.put(parent);
//objectStore.onSet(parent, 'children', parent.children.slice(0, parent.children.length - 1), parent.children);
}
grid.beginUpdate();
add({ id: '1.1', name: 'one.one', value: 3 }, '1');
add({ id: '1.2', name: 'one.two', value: 4 }, '1');
add({ id: '1.2.1', name: 'one.two.one', value: 5 }, '1.2');
add({ id: '2.1', name: 'two.one', value: 6 }, '2');
grid.endUpdate();
});
这是一把小提琴:
用objectStore.start
取消对行的注释有帮助,但它似乎不完整(我需要触发mor事件)。我希望dojo/store/Observable能帮我做到这一点。
我做错了什么