网格列渲染器未调用

时间:2018-05-30 07:57:32

标签: rally code-rally

我在使用过滤插件时没有调用拉力网格列渲染时遇到问题。

首次进入页面时,它可以正常工作,甚至是过滤。但是,如果我进行页面刷新(浏览器F5或转到另一页面并返回),则不会调用渲染器功能。

这是一个错误或功能吗?

我可以强制以某种方式调用渲染器函数,例如,在商店加载事件中吗?

这是一个显示行为的小例子;

Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function () {

    Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
        models: ['PortfolioItem/Initiative'],
        enableHierarchy: true
    }).then({
        success: this._onStoreBuilt,
        scope: this
    });
},


_onStoreBuilt: function (store) {
    var modelNames = ['PortfolioItem/Initiative'];
    var context = this.getContext();

    this.add({
        xtype: 'rallygridboard',
        context: context,
        modelNames: modelNames,
        toggleState: 'grid',
        plugins: [
            'rallygridboardaddnew',
            {
                ptype: 'rallygridboardfieldpicker',
                headerPosition: 'left',
                modelNames: modelNames,
                stateful: true,
                stateId: context.getScopedStateId('grid-fields')
            },
            {
                ptype: 'rallygridboardinlinefiltercontrol',
                inlineFilterButtonConfig: {
                    stateful: true,
                    stateId: context.getScopedStateId('grid-filters'),
                    modelNames: modelNames,
                    inlineFilterPanelConfig: {
                        quickFilterPanelConfig: {
                            defaultFields: [
                                'ArtifactSearch',
                                'State'
                            ]
                        }
                    }
                }
            }
        ],
        gridConfig: {
            store: store,
            columnCfgs: [
                'Name',
                'State',
                {
                    text: 'Refined',
                    dataIndex: 'RefinedEstimate',
                    renderer: function (value) {
                        console.log("RefinedEstimate:renderer");
                        return value + " EUR";
                    }
                }
            ]
        },
        height: this.getHeight()
    });
}

});

4 个答案:

答案 0 :(得分:0)

如果在gridconfig中将alwaysShowDefaultColumns设置为true,该怎么办?

gridConfig: {
    alwaysShowDefaultColumns: true
}

答案 1 :(得分:0)

我一直在玩不同的选项,实际上我认为它与网格板有关,而不是插件。

我已经创建了一个相当简单的网格板,我可以在其上重现这个问题。

复制步骤;

  1. 创建新页面
  2. 插入HTML应用+粘贴代码
  3. 重新排列列排序
  4. 刷新页面(F5)或跳转到另一页并返回
  5. 现在不再调用自定义渲染器功能。

    我尝试过使用拉力网格,但这里的渲染效果还不错。

    Bare-bone RallyGrid代码

    Ext.define('CustomApp', {
    extend: 'Rally.app.App',
    componentCls: 'app',
    launch: function () {
        console.log("launch()");
        Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
            models: ['PortfolioItem/Initiative'],
            autoLoad: true,
            enableHierarchy: true
        }).then({
            success: this._onStoreBuilt,
            scope: this
        });
    },
    
    _onStoreBuilt: function (store) {
        console.log("_onStoreBuilt()");
        var modelNames = ['PortfolioItem/Initiative'];
        var context = this.getContext();
        var me = this;
    
        var myGrid = me.add({
            xtype: 'rallygridboard',
            context: context,
            modelNames: modelNames,
            toggleState: 'grid',
    
            gridConfig: {
                store: store,
                alwaysShowDefaultColumns: true,
                columnCfgs: [
                    'Name',
                    'State',
                    {
                        text: 'Refined',
                        dataIndex: 'RefinedEstimate',
                        renderer: function (value) {
                            console.log("RefinedEstimate:renderer");
                            return value + " EUR";
                        }
                    },
                    {
                        text: 'Department (Yrs)',
                        xtype: 'templatecolumn',
                        tpl: '{RefinedEstimate} ({Name})'
                    }
                ]
            },
            height: me.getHeight()
        });
    }});
    

答案 2 :(得分:0)

问题似乎是你没有获取你想要显示的字段。

如果在进行第一次TreeStore构建时没有指定“获取”列表,则SDK将恢复为默认字段集(即不是所有字段)。在执行网格时,该字段不存在,因此无法获取数据,因此无需调用渲染器。

如果在enableHierarchy之后添加一行“fetch:true”,它可能会破灭。如果您不想获取所有字段,请指定要获取的字段数组。例如:     fetch:['FormattedID','ObjectID','RefinedEstimate','InitialEstimate']

答案 3 :(得分:0)

我已经确认这是一个错误。

由于专注于使用React的新框架,因此可能不被优先考虑。