Rally WsapiDataStores是通过引用传递的吗?

时间:2013-10-11 12:02:23

标签: rally

我正在尝试创建一个项目组合项目报告,该报告使用Rally.ui.grid.Grid获取某些属性信息,并使用Ext.panel.Panel进行描述。因为我希望将此信息与1对1进行匹配,所以我正在通过数据查询进行分页。一切都可以显示我想要的数据格式,但最终调用的数据填充每个网格(第3页填充网格1-3)。这让我想知道商店是否通过引用传递到网格中,我如何更改它,以便它对每个网格都是唯一的。以下是代码段:

_loadScopeDetails: function() {    
    Ext.create('Rally.data.WsapiDataStore', {
        autoLoad: true,
        pageSize: 1,    // Load 1 page at a time
        limit: 1,       // Limit to 1

        model: 'PortfolioItem/MMF',
        context: MyApp.globalContext,

        fetch: ['Parent',
                'Project',
                'Name',
                'InvestmentCategory',
                'PlannedStartDate',
                'PlannedEndDate',
                'Description'
                ],

        filters: [
                {
                    property: 'Parent.Name',
                    operator: 'Contains',
                    value: MyApp.selectedEpicName
                }
            ],

        sorters: {
            property: 'Rank',
            direction: 'ASC'
        },

        listeners: {
            load: function( store, records ) {
                MyApp._buildScopeDetails( store, records );

                // Load the next until all pages are loaded
                if ( store.currentPage < store.totalCount )
                {
                   store.loadPage( store.currentPage+1 );
                }
                else
                {
                    var index = 0;
                    for (index=0; index< store.totalCount; index++ ){
                        MyApp.scopePane.add(MyApp.scopeDetails[index]);
                        MyApp.scopePane.add(MyApp.scopeDescription[index] );
                    }
                }
            }
        }
    });
},

_buildScopeDetails: function(myStore, records) {
    // Filter off the epic from the scope title
    var epicTitle = MyApp.selectedEpicName + ': ';
    var title = records[0].data.Name;
    if ( 0 === title.indexOf( epicTitle ) ) {
        title = title.substr( epicTitle.length );
    }

    MyApp.scopeDetails.push( Ext.create('Rally.ui.grid.Grid', {
        store: myStore,  // This seems to be referenced in all grids!?!?!
        title: '<a href=\'' + Rally.nav.Manager.getDetailUrl( records[0] ) + '\'>' + title + '</a>',
        border: 1,
        columnCfgs: [
            'Name',
            {dataIndex: 'c_SAPProjectNumber', text:'SAP #'},
            'InvestmentCategory',
            'PlannedStartDate',
            'PlannedEndDate',
            'Project'
        ],
        showPagingToolbar: false            
    }) );

    MyApp.scopeDescription.push( Ext.create('Ext.panel.Panel', {
        width: '100%',
        html: '<p>' + records[0].data.Description + '</p>',
        renderTo: Ext.getBody()
    }) );
},

1 个答案:

答案 0 :(得分:2)

我认为正在发生的事情是用于网格的模型正在发生变化。因此,当模型更改时,网格会更新以显示该信息。

要获取一张图表上的所有信息,您可能需要完成以下两项操作之一。

  1. 制作商店并保存要显示的记录。将该商店用于您的餐桌。
  2. 让WsapiDataStore一次性获取所有条目,并解析它们以获取所需的数据。