Extjs:如何在网格中呈现带有工具提示的进度条

368yc8dk  于 2022-10-18  发布在  其他
关注(0)|答案(1)|浏览(212)

我有一个网格,其中一列表示进度条。我需要在进度条上设置一个工具提示“Progress 4 of 10”。最初是这样的:

columns: [
        {
        translatable: {
            text: 'progress'
        },
        tdCls: 'highlight',
        xtype: 'widgetcolumn',
        dataIndex: 'progress',
        widget: {
            cls: 'percentage-bar',
            text: ' ',
            align: 'center',
            xtype: 'progressbar',
            defaultListenerScope: true,
            listeners: {
                afterrender: function (bar) {
                    var tip = Ext.create('Ext.tip.ToolTip', {
                        target: bar,
                        html: Dict.translateAndReplace(
                            'step',
                            [
                                bar.getWidgetRecord().get('current_step') === 0 ? 1 : bar.getWidgetRecord().get('current_step'),
                                bar.getWidgetRecord().get('total_steps')
                            ],
                            '%d'
                        )
                    });

                    if (bar.getValue() === 1) {
                        bar.addCls('progress-complete')
                    }
                },
            },
        },
        width: 100
    },

问题是--它只适用于一个页面。当有多个页面或者我应用过滤或排序时,不会触发事件“After Render”。因此,只有当网格加载时才会触发,而不是内容。我需要更改为目标元素或使用渲染器。我试着用渲染器玩Arroung,但也卡住了。如何获得当前的电池容器?

columns: [
        {
        translatable: {
            text: 'progress'
        },
        tdCls: 'highlight',
        xtype: 'widgetcolumn',
        dataIndex: 'progress',
        width: 100,
        widget: {
            cls: 'percentage-bar',
            text: ' ',
            align: 'center',
            xtype: 'progressbar',
            defaultListenerScope: true,
        },
        renderer: function (value, metaData, record) {
            let HowToGetTheContainer = "?????";
            var tip = Ext.create('Ext.tip.ToolTip', {
                target: HowToGetTheContainer,
                html: Dict.translateAndReplace(
                    'step',
                    [
                        record.get('current_step') === 0 ? 1 : record.get('current_step'),
                        record.get('total_steps')
                    ],
                    '%d'
                )
            });

            if (value === 1) {
                Ext.down().addCls('progress-complete')
            }

        }
    },

如何获取变量“HowToGetTheContainer”?

tyu7yeag

tyu7yeag1#

renderer函数中,您可以使用以下代码添加工具提示(这也适用于其他列类型,而不仅仅是widgetcolumn):

metaData.tdAttr = Ext.String.format('data-qtip="{0}"', 'This is my tooltip here');

这不是您问题的一部分,但要在widgetcolumn中自定义小部件,例如添加progress-complete样式,而不是使用Ext.down(),您可以使用Column的onWidgetAttach函数:

columns: [{
    xtype: 'widgetcolumn',    
    onWidgetAttach: function(col, widget, record) {        
        widget.setIconCls('xxx')
        widget.addCls('xxx')
        widget.setText('xxx');
        // etc
    },    
}]

相关问题