我有一个网格,里面有三个数字字段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);
}
})
}
任何解决方法。
有不同的方法可以做到这一点,每一种方法都有优点和缺点。要改变列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