【问题标题】:Extjs get actioncolum item properties inside getClassExtjs 在 getClass 中获取 actioncolum 项目属性
【发布时间】:2018-08-17 18:18:03
【问题描述】:

我希望我可以清楚地解释我的问题:

我有一些 actioncolumn 图标,我想重复使用相同的 getClass 函数,因为它的作用几乎相同:隐藏某些行类型。

我的物品是这样的:

actions: {
    print: {
        iconCls: 'fa fa-print info-icon',
        tooltip: 'Print',
        getClass:'rowClassByType'
    },
    download: {
        iconCls: 'fa fa-download info-icon',
        tooltip: 'Download',
        getClass:'rowClassByType'
    },
    view: {
        iconCls: 'fa fa-file-o info-icon',
        tooltip: 'View',
        handler: 'transDetByIconClick',
    },
    mail: {
        iconCls: 'fa fa-envelope-o info-icon',
        tooltip: 'Message',
        test: 'test',
        handler: '',
        getClass:'rowClassByType'

    }
},

我想隐藏所有图标,如果该行在某个列上具有某些特定值,则“视图”除外,所以我在我的控制器上这样做了:

rowClassByType: function(v, metadata, r, rowIndex, colIndex, store, view) {
    if (r.data.description !== 'IN') {
        return 'x-hidden-visibility';
    }
    return 'fa '+icon+' info-icon';
},

示例: 如何为“B”类型的行保留原始类?:

https://fiddle.sencha.com/#view/editor&fiddle/2kj7

我知道我可以这样做,但我不想这样做:

https://fiddle.sencha.com/#view/editor&fiddle/2kj9

谁能给我一个关于最好的方法的提示?

【问题讨论】:

  • 你使用哪个框架版本?假设您要使用经典框架,我建议您可以查看 isDisabled 方法 - docs.sencha.com/extjs/6.5.3/classic/… 如果这对您没有帮助,我想请您创建一个小提琴以找到更好的解决方案跨度>
  • 是的,我使用经典的框架和 ext 6.6。按钮必须隐藏,而不是禁用。我会尽量拉小提琴。

标签: extjs


【解决方案1】:

这应该有效:

   getClass: function (v, meta, r, rowIndex) {
                        var cls = 'x-fa fa-' // fallback
                        var type = r.get('type');
                        if (type === 'a') {
                            cls += 'warning';
                        } else if (type === 'b') {
                            cls += 'cog';
                        } else if (type === 'c') {
                            cls = '';
                        }
                        return cls;
                    }

https://fiddle.sencha.com/#view/editor&fiddle/2kj8


如果您需要参考您的操作,这应该可以:

isActionDisabled: function (v, r, c, item){
                    var cls = item.iconCls;
                    if(r === 2){
                        cls = '';
                    }
                     if(r === 1){
                        cls = 'x-fa fa-warning';
                    }
                     if(r === 4){
                        cls = 'x-fa fa-eye';
                    }
                    item.iconCls = cls;
                    return false;
                }

https://fiddle.sencha.com/#view/editor&fiddle/2kja

【讨论】:

  • 我想保留“B”类型行的原始类:fiddle.sencha.com/#view/editor&fiddle/2kj7
  • 看看我更新的小提琴,对你有帮助吗?在您的情况下,如果满足隐藏图标的条件,则返回一个空字符串
  • 感谢您的建议,@devbnz。如果您以前知道图标类(在您的情况下是 fa-warning),那么您的方法就可以工作,但我想让它适用于两个或更多类。我采用了这种方法,但我不喜欢它:fiddle.sencha.com/#view/editor&fiddle/2kj9
  • 图标本身是不是基于记录数据?
  • 是的,有点。我总是显示相同的图标,除非在给定的情况下,当我必须隐藏其中两个时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2014-07-21
  • 2014-06-02
相关资源
最近更新 更多