Grid Column Renderer не называется - PullRequest
0 голосов
/ 30 мая 2018

У меня проблема с отображением столбца раллийной сетки, который не вызывается при использовании плагина фильтрации.

При первом входе на страницу все работает нормально, даже фильтрация.Но если я обновляю страницу (браузер 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 голосов
/ 10 августа 2018

Я получил подтверждение, что это ошибка.

Не может быть приоритетом из-за сосредоточенности на новой платформе с использованием React.

0 голосов
/ 08 июня 2018

Я играл с разными вариантами, и я действительно думаю, что это как-то связано с сеткой, а не с плагинами.

Я создал довольно голую сетку, на которой я могу воспроизвестипроблема.

шаги воспроизведения;

  1. создание новой страницы
  2. вставка приложения HTML + вставка кода
  3. изменение порядка расположения столбцов
  4. Обновление страницы (F5) или переход на другую страницу и обратно

Теперь пользовательская функция рендерера больше не вызывается.

Я пробовал то же самое сRallyGrid, но здесь рендеринг работает нормально.

Bare-bone RallyGrid Code

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()
    });
}});
0 голосов
/ 08 июня 2018

проблема заключается в том, что вы не выбираете поле, которое пытаетесь отобразить.

Если вы не указали список «выборка» при выполнении первой сборки TreeStore, то SDKвернется к стандартному набору полей (т.е. не ко всем).Когда дело доходит до сетки, поле не существует, поэтому оно не может извлекать данные, поэтому не вызывает вызов средства визуализации.

Если вы добавите строку «fetch: true» послеenableHierarchy, это, вероятно, ворвется в жизнь.Если вы не хотите извлекать ВСЕ поля, укажите массив полей для извлечения.Например: fetch: ['FormattedID', 'ObjectID', 'RefinedEstimate', 'PreticalEstimate']

0 голосов
/ 01 июня 2018

Что делать, если вы установите для AlwaysShowDefaultColumns значение true в вашем gridconfig?

gridConfig: {
    alwaysShowDefaultColumns: true
}
...