控制器/处理程序中的ExtJS更改actioncolumn图标

控制器/处理程序中的ExtJS更改actioncolumn图标,extjs,extjs4,Extjs,Extjs4,TLDR:我正在使用ExtJS 4,我想从hanlder/controller更改操作列按钮图标。我怎么能做到 我的问题:我有一个菜单来创建一组设备,它包含一个包含所有现有设备的表(该设备有一个id,名称,并且隶属于组成员),带有分页和ajax存储。要创建一个组,我必须向服务器传递一个设备ID数组 为此,我将操作列添加到网格中。通过单击action列中的按钮,我想将设备id添加到两个数组中的一个,这两个数组存储为网格属性(addedMembers和deletedMembers),并更改actio

TLDR:我正在使用ExtJS 4,我想从
hanlder
/controller更改操作列按钮图标。我怎么能做到

我的问题:我有一个菜单来创建一组设备,它包含一个包含所有现有设备的表(该设备有一个
id
名称
,并且隶属于组
成员
),带有分页和ajax存储。要创建一个组,我必须向服务器传递一个设备ID数组

为此,我将操作列添加到网格中。通过单击action列中的按钮,我想将设备id添加到两个数组中的一个,这两个数组存储为网格属性(
addedMembers
deletedMembers
),并更改action列中的图标。目前,以下所有代码都可以工作,但我不明白如何更改图标

网格:


或者也许有更好的办法来解决我的问题?

我无权发表评论,所以我只想尝试一下答案。我就是这样做的……你就快到了,只需添加图标即可。:)

{
xtype:'actioncolumn',
文本:Ext.String.capitalize(“”),
宽度:75,
项目:[
{
iconCls:“拒绝”//
Ext.define('Portal.view.devicegroups.GroupDevicesGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.groupDevicesGrid',

addedMembers: [],
deletedMembers: [],

store: 'devicegroups.GroupDevicesStore',

columns: [
    {
        dataIndex: 'name',
        flex: 1,
        sortable: true,
        text: Ext.String.capitalize("<?=gettext('name')?>")
    },
    {
        xtype: 'actioncolumn',
        text: Ext.String.capitalize("<?=gettext('member')?>"),
        width: 75,
        items: [
            {
                getClass: function (value, meta, record, rowIndex, colIndex) {
                    var cls = 'deny';
                    if (this.up('groupDevicesGrid').deletedMembers.indexOf(record.get('id')) !== -1 || record.get('member') == 1) {
                        cls = 'allow';
                    }
                    return cls;
                },
                handler: function (view, rowIndex, colIndex, item, event, record, row) {
                    this.fireEvent('changeMembership', rowIndex, record);
                }
            }
        ]
    }
]
});
    changeGroupDeviceMembership: function(rowIndex, device) {
    var groupDevicesGrid = this.getGroupDevicesGrid(),
        groupDevicesStore = groupDevicesGrid.getStore(),
        addedMembers = groupDevicesGrid.addedMembers,
        deletedMembers = groupDevicesGrid.deletedMembers,
        deviceId = device.get('id'),
        isMember = device.get('member');
    if(isMember == 1) {
        if(deviceId) {
            if(deletedMembers.indexOf(deviceId) === -1) {
                // Set allow icon
                deletedMembers.push(deviceId);
            } else {
                // Set deny icon
                deletedMembers.splice(deletedMembers.indexOf(deviceId), 1);
            }
        }
    } else if(isMember == 0) {
        if(deviceId) {
            if(addedMembers.indexOf(deviceId) === -1) {
                // Set deny icon
                addedMembers.push(deviceId);
            } else {
                // Set allow icon
                addedMembers.splice(deletedMembers.indexOf(deviceId), 1);
            }
        }
    }
},
{
    xtype: 'actioncolumn',
    text: Ext.String.capitalize("<?=gettext('member')?>"),
    width: 75,
    items: [
        {
            iconCls:'deny', //<== try adding this icon cls
            getClass: function (value, meta, record, rowIndex, colIndex) {
                var cls = 'deny';
                meta.tdAttr = 'data-qtip="Deny"'; //<== I like tool tips
                if (this.up('groupDevicesGrid').deletedMembers.indexOf(record.get('id')) !== -1 || record.get('member') == 1) {
                    cls = 'allow';
                    meta.tdAttr = 'data-qtip="Allow"'; //<== I like tool tips
                }
                return cls;
            },
            handler: function (view, rowIndex, colIndex, item, event, record, row) {
                this.fireEvent('changeMembership', rowIndex, record);
            }
        }
    ]
}