带有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能帮我做到这一点。 我做错了什么