EXTJS Сетка внутри вкладки - фильтр работает только при обновлении страницы - PullRequest
0 голосов
/ 11 июня 2019

мы используем extjs 4.1, и у меня возникла странная проблема. У нас есть группа из 3 вкладок, и эти вкладки содержат сетки extjs. Сетки extjs в первых 2 прекрасно загружают данные и также имеют опцию фильтра. Сетка extjs на 3-й вкладке загружает данные, но не показывает меню фильтра. Однако, когда страница обновляется в то время как на 3-й вкладке, сетка показывает меню фильтра. я новичок в extjs. пожалуйста, помогите.

ext-all-debug-w-comments-v4.1.2a.js:144232 Uncaught TypeError: Cannot read property 'enable' of null
at constructor.showMenuBy (ext-all-debug-w-comments-v4.1.2a.js:144232)
at constructor.onHeaderTriggerClick (ext-all-debug-w-comments-v4.1.2a.js:141028)
at constructor.onElClick (ext-all-debug-w-comments-v4.1.2a.js:142124)
at HTMLDivElement.eval (eval at cacheableFunctionFactory (ext-all-debug-w-comments-v4.1.2a.js:683), <anonymous>:6:13)
at HTMLDivElement.wrap (ext-all-debug-w-comments-v4.1.2a.js:15197)

следующая строка, где происходит ошибка, но эта строка находится в пределах extjs

 showMenuBy: function(t, header) {
    var menu = this.getMenu(),
        groupMenuItem  = menu.down('#groupMenuItem'), //this menu is null and therefore the error but this is auto generated by extjs
        groupMenuMeth = header.groupable === false ?  'disable' : 'enable',
        groupToggleMenuItem  = menu.down('#groupToggleMenuItem');

    groupMenuItem[groupMenuMeth](); //this statement is null and throws the error
    if (groupToggleMenuItem) {
        groupToggleMenuItem[this.view.store.isGrouped() ?  'enable' : 'disable']();
    }
    Ext.grid.header.Container.prototype.showMenuBy.apply(this, arguments);
}

// код из onHeaderTrigerClick stackTrace:

onHeaderTriggerClick: function(header, e, t) {
    // generate and cache menu, provide ability to cancel/etc
    var me = this;
    if (header.fireEvent('headertriggerclick', me, header, e, t) !== false && me.fireEvent("headertriggerclick", me, header, e, t) !== false) {
        me.showMenuBy(t, header);
    }
}

// код от onElClick:

  onElClick: function(e, t) {

    // The grid's docked HeaderContainer.
    var me = this,
        ownerHeaderCt = me.getOwnerHeaderCt();

    if (ownerHeaderCt && !ownerHeaderCt.ddLock) {
        // Firefox doesn't check the current target in a within check.
        // Therefore we check the target directly and then within (ancestors)
        if (me.triggerEl && (e.target === me.triggerEl.dom || t === me.triggerEl.dom || e.within(me.triggerEl))) {
            ownerHeaderCt.onHeaderTriggerClick(me, e, t);
        // if its not on the left hand edge, sort
        } else if (e.getKey() || (!me.isOnLeftEdge(e) && !me.isOnRightEdge(e))) {
            me.toggleSortState();
            ownerHeaderCt.onHeaderClick(me, e, t);
        }
    }
}

Ответы [ 2 ]

1 голос
/ 12 июня 2019

в каждом случае, параметр header равен null.

см. Ext.grid.feature.Grouping .

0 голосов
/ 11 июня 2019

Вероятно, проблема css может быть вызвана порядком, в котором загрузка и высота компонентов применяются к заголовку.Используйте ниже css:

.ui-grid-header-cell{
height:60px;
max-height:60px;
}

Определите идентификатор компонента заголовка и используйте его вместо .ui-grid-header-cell

...