1

我正在创建功能及其功能依赖关系的概述(不是用户故事)。

我正在获取第 1 步中发布时过滤的 wsapi 存储,在第 2 步中,我正在获取前任和后继集合以显示它们的值。

我想直接在网格中使用这个 wsapi 存储,但是在执行 onScopeChange(发布过滤的应用程序)时,网格的呈现发生在我加载前任 + 后继集合之前。因此,我试图将数据存储在 custom.store 中以在网格中使用 - 到目前为止一切都很好。

我的问题是我需要自己在网格中进行所有(大部分)格式化。我正在将自定义商店模型设置为 PortfolioItem/Feature,并希望在网格上使用它,但事实并非如此。这可能吗?如果是这样,我做错了什么?

定制商店

_getViewStore: function () {

var me = this;
/*
    Extract data from featureStore
*/
var records = me.myFeatureStore.getRecords();

/*
    Create new, update, store for adding into grid
*/
if (!me.myViewStore) {
  me.myViewStore = Ext.create('Rally.data.custom.Store', {
    model: 'PortfolioItem/Feature',
    data: records,
  });
} else {
  me.myViewStore.removeAll();
  me.myViewStore.add(records);
}

},

网格

_createGrid: function () {
var me = this;

me.myGrid = Ext.create('Ext.Container', {
  items: [{
    xtype: 'rallygrid',
    store: me.myViewStore,

    columnCfgs: [{
        xtype: 'gridcolumn',
        align: 'left',
        tpl: Ext.create('Rally.ui.renderer.template.FormattedIDTemplate'),
        text: 'Predecessors',
        dataIndex: 'Predecessors',
        width: 200,

        renderer: function (value, metaData, record) {
          var mFieldOutputPre = '';
          var records = record.predecessorStore.getRecords();

          _.each(records, function (feature) {
            mFieldOutputPre += Rally.nav.DetailLink.getLink({
              record: feature,
              text: feature.get('FormattedID'),
              showTooltip: true
            });
            // Add the feature name and a line break.
            mFieldOutputPre += ' - ' + feature.get('Name') + '<br>';
          }); //_.each

          return mFieldOutputPre;
        },
      },
      {
        text: 'FormattedID',
        dataIndex: 'FormattedID',
        xtype: 'templatecolumn',
        tpl: Ext.create('Rally.ui.renderer.template.FormattedIDTemplate')
      },
      {
        text: 'Name',
        dataIndex: 'Name',
        flex: 1
      },
      {
        text: 'Release',
        dataIndex: 'Release',
        flex: 1
      },
     {
        text: 'State',
        dataIndex: 'State',
        flex: 1
      },
      { // Column 'Successors'
        xtype: 'templatecolumn',
        align: 'left',
        tpl: Ext.create('Rally.ui.renderer.template.FormattedIDTemplate'),
        text: 'Successors',
        dataIndex: 'Successors',
        width: 200,

        renderer: function (value, metaData, record) {
          var mFieldOutputSuc = '';
          var records = record.successorStore.getRecords();

          _.each(records, function (feature) {
            //console.log('feature = ', feature);
            mFieldOutputSuc += Rally.nav.DetailLink.getLink({
              record: feature,
              text: feature.get('FormattedID'),
              showTooltip: true
            });
            // Add the feature name and a line break.
            mFieldOutputSuc += ' - ' + feature.get('Name') + '<br>';
          }); 

          return mFieldOutputSuc;
        }, 
      } 
    ] 
  }],
  renderTo: Ext.getBody()
});
me.add(me.myGrid);

}

使用我的自定义存储时,Release + State 字段显示的数据不正确,但如果我使用格式正确的 wsapi(功能)存储。

先感谢您

4

1 回答 1

0

我可能会先加载所有商店,然后添加使用您已加载的功能商店配置的 rallygrid。这样您就不必担心时间问题。我猜你已经在加载子集合的文档中找到了这个例子?

https://help.rallydev.com/apps/2.1/doc/#!/guide/collections_in_v2-section-collection-fetching

这个例子也很有帮助,因为它展示了如何像您正在做的那样加载分层数据,并使用承诺来帮助管理所有这些,然后在所有内容完成加载后执行一些操作:

https://help.rallydev.com/apps/2.1/doc/#!/guide/promises-section-retrieving-hierarchical-data

于 2018-05-25T01:52:11.603 回答