如何通过改变数字字段小部件来改变和禁用其他列相同的记录。

问题描述 投票:0回答:1

我有一个网格,里面有三个数字字段widgetcolumn,每当我改变A列时,我希望B列和C列能根据后台的响应得到改变和禁用。 每当我改变A列时,我希望B列和C列得到改变,并根据一些后台响应来禁用。

我在这里有几个疑问。

如何改变B列和C列的数量和禁用,因为...。onchange 是不能禁用的。所以我使用 onwidgetAttach 这是在变化时发射的。但这里的问题是,如果有1000条记录,它就会增加1000倍。此外,如果我删除任何记录,它是不正确的工作。

这里是我的代码。

onWidgetAttachColumnB : function(column, widget){

      _this.getCommonService().fetchDetails(options).then({
                    success: function (response){
                        widget.setValue(response.value);
                        widget.setDisabled(response.disable);                                    
                    }
        })
}





onWidgetAttachColumnC : function(column, widget){

      _this.getCommonService().fetchDetails(options).then({
                    success: function (response){
                        widget.setValue(response.value);
                        widget.setDisabled(response.disable);                                    
                    }
        })
}

任何解决方法。

javascript extjs
1个回答
0
投票

有不同的方法可以做到这一点,每一种方法都有优点和缺点。要改变列B和C依赖于列A的值,你可以使用计算模型字段。

Ext.define('TheModel', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'fieldA',
        type: 'int'
    }, {
        name: 'fieldB',
        calculate: function (data) {
            return Math.pow(data.fieldA, 2);
        }
    }, {
        name: 'fieldC',
        calculate: function (data) {
            return Math.pow(data.fieldA, 3);
        }
    }, ]
});

要禁用列依赖于 "一些后台响应",你可以在模型中放入 "不可见 "文件,它不会在网格列模型中列出,将来自后台,并使用该字段值禁用列。在下面的例子中,我禁用了渲染器中的列: fiddle link

© www.soinside.com 2019 - 2024. All rights reserved.