防止单击或显示复选框

时间:2012-10-04 10:08:21

标签: c# extjs

我可以阻止单击网格单元格上的复选框吗?

这是我的专栏:

{
    header: 'Select',
    dataIndex: 'indexSelect',
    width: 75,
    xtype: 'checkcolumn',
    renderer: this.CheckColumn_CheckStatus,
}

并且我正在尝试使用渲染器来禁用或隐藏复选框:

CheckColumn_CheckStatus: function (value, metaData, record, rowIndex, colIndex, store) 
{
   //do something
}

如果我没有返回任何内容甚至返回一个空字符串,则该复选框不会在UI上呈现,但仍然可以选中它。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以简单地从beforecheckchange听众中返回错误等等。

如果您正在使用MVC模式,只需将其包含在您的控制器中:

'yourgridpanel checkcolumn': {

    beforecheckchange: function(column, index) {
        var user = Ext.getStore('User').first();

        // I was doing this if a user doesn't have permission but
        // if you want to stop all edits you can just return false
        // without the "if" statement
        if (!user || !user.get('edit_permission')) {
            return false; // cancels checkchange event
        }
    }
}

如果您没有使用MVC模式,您可以将监听器附加到列本身(我假设您要取消此示例中的所有检查更改):

{
    header: 'Select',
    dataIndex: 'indexSelect',
    width: 75,
    xtype: 'checkcolumn',
    listeners: {
        beforecheckchange: function() {
            return false; // cancels all checkchanges
        }
    }
}, {
    // another column definition, etc...
}
相关问题