1

在使用过滤插件时,我遇到了一个集会网格列渲染没有被调用的问题。

首次进入页面时,它工作正常,甚至过滤。但是,如果我进行页面刷新(浏览器 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

4 回答 4

0

如果在 gridconfig 中将 alwaysShowDefaultColumns 设置为 true 会怎样?

gridConfig: {
    alwaysShowDefaultColumns: true
}
于 2018-06-01T16:28:19.413 回答
0

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

如果您在进行第一次 TreeStore 构建时未指定“获取”列表,则 SDK 将恢复为默认字段集(即不是所有内容)。做网格的时候,字段是不存在的,所以无法获取数据,也就懒得调用渲染器了。

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

于 2018-06-08T14:15:36.987 回答
0

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

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

复制步骤;

  1. 创建新页面
  2. 插入 HTML 应用程序 + 粘贴代码
  3. 重新排列列顺序
  4. 刷新页面 (F5) 或跳转到另一个页面并返回

现在不再调用自定义渲染器函数。

我已经尝试过使用 rallygrid 进行相同的操作,但这里的渲染工作正常。

准系统 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()
    });
}});
于 2018-06-08T10:22:12.617 回答
0

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

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

于 2018-08-10T10:38:08.797 回答