【问题标题】:How to create smaller dojo store from a main dojo store and keep both in synch?如何从主要的道场商店创建较小的道场商店并保持两者同步?
【发布时间】:2012-02-24 02:47:27
【问题描述】:

我有一个像这样的主存储:

var data = {

   identifier: "pkid",
   items: [ {pkid: 3456, name: "Tom", kids: [ {pkid: 3459, kidname: "Jenny"}, {pkid: 45698, kidname: "Jimmy"} ]
   }

   var mainStore = new ItemFileWriteStore({data: data});  

   var mainGrid = new var grid = new dojox.grid.DataGrid({
        id: 'grid',
        store: store,
        structure: layout,
        rowSelector: '20px'},
      document.createElement('div'));

    /*append the new grid to the div*/
    dojo.byId("maingridDiv").appendChild(grid.domNode);

    /*Call startup() to render the grid*/
    grid.startup();

   var selectedRow = mainGrid.getItem(0);

   var kids = mainStore.getValues(selectedRow, "kids");

var kidsData =

{

   identifier: "pkid",
   items: kids
   }

  var kidsStore = new ItemFileWriteStore({data: kidsData});

  var kidsGrid = ........
         store: kidsStore,
      ..............

首先,kidsData 中的引用 kids 不起作用,因为 dojo 在渲染 kidsGrid 时会抛出错误。

其次,假设我想删除 kidsStore 中的一个项目(行或孩子),我希望该孩子也从 mainStore 中删除。有没有好的解决方案?

【问题讨论】:

  • 我帮不了你,但让我们看看In jsfiddle你的一些代码不正确。可能会有所帮助。

标签: dojo dojox.grid


【解决方案1】:

首先,ItemFileWriteStore 和 JsonRestStore 不能使用相同的结构。 IFWS 仅使用数组,而 JRS 使用数组/对象的混合。

恐怕您将不得不手动管理这些关系。例如,在编辑孩子后点击验证时,您将遍历它们,然后更新 JRS,然后是 JRS.save()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-02
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多