dgrid Tree 一开始呈现平坦

dgrid Tree rendering flat at first

我有一个与 post 非常相似的问题。

我的症状是一样的(parents 和 children 一开始是扁平的。你可以 "expand" parents 引起一些 children 在它们下面正确显示,然后您可以再次折叠它们以使树显示它应该如何显示)但是提供的解决方案(将 store.getRootCollection() 传递给网格而不是仅仅存储)不会为我工作。如果我这样做,除了 headers 显示之外我什么也得不到。

首先,我尝试使用 dgrid laboratory 中显示的代码(只需检查 "Grid Features" 中的 "tree")来消除我的尽可能多的错误尽我所能。

我能想到的唯一与示例代码不同的地方是,我在自定义小部件内制作了这个网格,并且我正在加载其他几个模块(我知道我需要他们稍后)

define(["dojo/_base/declare",
        "dojo/_base/lang",
        "dojo/dom",
        "dojo/dom-construct",
        "dojo/text!./templates/DefaultsWidget.html",
        "dijit/_WidgetBase",
        "dijit/_TemplatedMixin",
        "dijit/_WidgetsInTemplateMixin",
        "dijit/TitlePane",
        "dijit/layout/ContentPane",
        "dgrid/OnDemandGrid",
        "dgrid/Keyboard",
        "dgrid/Selection",
        "dgrid/extensions/DijitRegistry",
        "dgrid/Editor",
        "dgrid/Tree",
        "dstore/Memory",
        "dstore/Trackable",
        "dstore/Tree",
        "dojo/domReady!"],
  function(/*DOJO:*/declare, lang, dom, domConstruct, template,
     /*DIJIT*/_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, TitlePane,ContentPane,
     /*DGRID*/OnDemandGrid, Keyboard, Selection, DigitRegistry, Editor, Tree,
     /*DSTORE*/Memory, Trackable, TreeStoreMixin){
   return declare("company.widgets.DefaultsWidget", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
    
    //The template defined with dojo.text
    templateString: template,    
    grid: null,
    
    postCreate: function(){
     
     var testData = [];
     var column;
     var i;
     var item;

     for (i = 0; i < 50; i++) {
      item = {};
      for (column in { First_Name: 1, Last_Name: 1 }) {
       item.id = i;
       item[column] = column + '_' + (i + 1);
      }
      if (i > 1) {
       item.hasChildren = false;
       item.parent = i % 2;
      }
      testData.push(item);
     }
     
     var store = new (declare([Memory, Trackable, TreeStoreMixin]))({
      data: testData
     });
     
     // Instantiate grid
     this.grid = new (declare([OnDemandGrid, Tree]))({
      collection: store,
      columns: {
       First_Name: {
        label: 'First Name',
        renderExpando: true
       },
       Last_Name: {
        label: 'Last Name'
       }
      },
     }, this.testGrid);
     

    },
    startup: function() {
     this.grid.startup();
    }

   }); //return declare
        }//function
);//define

这是网格显示 collection 的方式:store,

如果您需要更多信息,或者我是否遗漏了任何 SO 指南或礼仪,请告诉我,我很乐意进行编辑、改写等。

导致网格以这种方式显示的问题似乎是根行中没有 parent: null。实验室中显示的代码似乎无法按原样工作,并且需要我刚才提到的修复以及我引用的问题中的 .getRootCollection() 修复。