Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EXTJS:如何将侦听器添加到动态添加到网格的复选框中_Javascript_Html_Extjs_Sencha Touch_Extjs5 - Fatal编程技术网

Javascript EXTJS:如何将侦听器添加到动态添加到网格的复选框中

Javascript EXTJS:如何将侦听器添加到动态添加到网格的复选框中,javascript,html,extjs,sencha-touch,extjs5,Javascript,Html,Extjs,Sencha Touch,Extjs5,我正在使用网格中有多个复选框列的网格。 复选框的状态(选中或未选中)基于webservice响应 我添加了两个复选框列,如下所示 // Column 1 { text : 'Column1', dataIndex : 'Column1', align: 'center', renderer: function(value, meta, r

我正在使用网格中有多个复选框列的网格。 复选框的状态(选中或未选中)基于webservice响应

我添加了两个复选框列,如下所示

        // Column 1
        {
                text : 'Column1',
                dataIndex : 'Column1',
                align: 'center',
                renderer: function(value, meta, record, rowIndex, colIndex) {
                    if(record != null && record.get('text') === 'col1') {
                        value = '<input type = "checkbox" checked />';
                    } else {
                        value = '<input type = "checkbox" />';
                    }
                    return value;
                }

            },
          // Column 2
            {
                text : 'Column2',
                dataIndex : 'Column2',
                align: 'center',
                renderer: function(value, meta, record, rowIndex, colIndex) {
                    if(record != null && record.get('text') === 'col2') {
                        value = '<input type = "checkbox" checked />';
                    } else {
                        value = '<input type = "checkbox" />';
                    }
                    return value;
                }

            },
//第1列
{
文本:“Column1”,
数据索引:“Column1”,
对齐:'居中',
渲染器:函数(值、元、记录、行索引、共索引){
if(record!=null&&record.get('text')='col1'){
值=“”;
}否则{
值=“”;
}
返回值;
}
},
//第2栏
{
文本:“Column2”,
dataIndex:'Column2',
对齐:'居中',
渲染器:函数(值、元、记录、行索引、共索引){
if(record!=null&&record.get('text')='col2'){
值=“”;
}否则{
值=“”;
}
返回值;
}
},
现在,如果选中列1,我必须禁用列2,反之亦然。我尝试使用checkcolumn,但它没有按预期工作

我不确定如何将侦听器与列呈现中的复选框相关联

任何帮助提示都很好。

您应该使用。这将为你节省很多工作。 你需要的是一个事件。选中一列时,取消选中另一列,反之亦然

columns: [{
    xtype: 'checkcolumn',
    dataIndex: 'ac1',
    text: 'MyCheck',
    listeners: {
        checkchange: 'onCheckcolumnCheckChange'
    }
}, {
    xtype: 'checkcolumn',
    dataIndex: 'ac2',
    text: 'MyCheck1',
    listeners: {
        checkchange: 'onCheckcolumnCheckChange2'
    }
}, {
    xtype: 'gridcolumn',
    dataIndex: 'text',
    text: 'String'
}],

onCheckcolumnCheckChange: function (checkcolumn, rowIndex, checked, record, eOpts) {
    // first checkbox is checked
    if (checked) {
        // uncheck the second checkbox
        record.set('ac2', false)
    }
},

onCheckcolumnCheckChange2: function (checkcolumn, rowIndex, checked, record, eOpts) {
    //second column is checked
    if (checked) {
        // uncheck the first checkbox
        record.set('ac1', false)
    }
}


禁用/启用单元格的解决方案:

onCheckcolumnCheckChange: function (checkcolumn, rowIndex, checked, record, eOpts) {
    // we need to get a grids view
    var view = Ext.first('#MySpecialGridId').getView();
    var cell = view.getCell(rowIndex,1);

    if (checked) {
        // add disable CSS to a cell
        cell.addCls(this.disabledCls);
    }else{
        // let's say we wan to enable the
        cell.removeCls(this.disabledCls)
    }

},


谢谢@pagep-这真是一个很好的例子。我正在研究如何根据对另一列的选择禁用一列。您能帮忙吗?@Gendaful您想禁用整个列吗?还是牢房?因为一旦你禁用了它-你是如何启用它的?只有细胞。我将根据其他一些条件启用它。我想要一些关于如何禁用该单元格的指针。更具体地说,从您的示例中,如果我从第3行检查MyCheck1,对应的MyCheck记录应该是DisabledHanks@pagep。最后,我使用viewmodel绑定禁用了复选框。但这肯定是另一种选择。谢谢你的帮助和指点。谢谢。