如何让ExtJs RowExpander只在某些行上显示图标([+])?

ni65a41a  于 2023-08-04  发布在  其他
关注(0)|答案(2)|浏览(122)

我正在使用RowExpander来显示网格中每一行的附加信息。某些行没有任何附加信息。对于这些行,我如何才能使展开图标(加号)不被呈现?有没有一个函数可以像过滤器一样使用?
我在这里看到过一个类似的问题,说有一个名为renderer()的函数,但我试过了,它没有被调用。

a1o7rhls

a1o7rhls1#

我想出了解决这个问题的办法。我扩展了RowExpander插件,并将getHeaderConfig函数复制粘贴到我的新插件中。这允许我对renderer函数进行必要的更改,以检查每条记录是否有任何内容要显示在rowBody/rowExpander中

Ext.define('MyApp.plugins.RowExpander', {
    extend: 'Ext.grid.plugin.RowExpander',
    alias: 'plugin.rowexpanderplus',
    getHeaderConfig: function () {
        var me = this;

        return {
            width: 24,
            lockable: false,
            sortable: false,
            resizable: false,
            draggable: false,
            hideable: false,
            menuDisabled: true,
            tdCls: Ext.baseCSSPrefix + 'grid-cell-special',
            innerCls: Ext.baseCSSPrefix + 'grid-cell-inner-row-expander',
            renderer: function (value, metadata, record, a, b, store, grid) {
                if (record.data.notes.length === 0) {
                    return '<div></div>';
                }

                // Only has to span 2 rows if it is not in a lockable grid.
                if (!me.grid.ownerLockable) {
                    metadata.tdAttr += ' rowspan="2"';
                }
                return '<div class="' + Ext.baseCSSPrefix + 'grid-row-expander" role="presentation"></div>';
            },
            processEvent: function (type, view, cell, rowIndex, cellIndex, e, record) {
                if (type == "mousedown" && e.getTarget('.' + Ext.baseCSSPrefix + 'grid-row-expander')) {
                    me.toggleRow(rowIndex, record);
                    return me.selectRowOnExpand;
                }
            }
        };
    }
});

字符串
这不是我想要做的,但是我看了插件的源代码,我没有看到任何方法来挂钩渲染器。

yyyllmsg

yyyllmsg2#

使用grid viewConfig的getRowClass方法并设置相应的css类:

{
    xtype:'grid',
    viewConfig:{
        getRowClass: function (record) {
            if (!record.get('notes').length) {
                return 'x-grid-row-expander-hidden'
            }
        }
    }
}

字符串
并将css规则添加到scss文件中:

.x-grid-row-expander-hidden .x-grid-row-expander {
    visibility: hidden;
}

相关问题