我有一个带有combobox
的小部件,需要的流程是这样的,
首先禁用组合。
每行都有编辑图标,当我单击“编辑”时,仅应启用该特定组合。
然后当我保存记录时,应再次禁用已启用的组合。
第3步对我不起作用。
{
text: 'TC',
dataIndex: 'scrTC',
xtype: 'widgetcolumn',
widget: {
xtype: 'combo',
store: 'TCStore',
valueField: 'value',
displayField: 'displayValue',
matchFieldWidth: false,
bind: {
readOnly: {
isReadOnly
}
}
}
}
我也尝试过onwidgetattach
方法,但是保存后该方法未调用,因此无法正常工作。
onWidgetAttach: function(column, widget, record) {
if (condition) {
widget.setReadOnly(false);
} else {
widget.setReadOnly(true);
}
}
有人有主意吗?
编辑2:
我已经在叶子记录中动态插入了readOnly:true。
在视图模型中创建一个isReadOnly函数,
Ext.define('MainViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.main',
data: {
isReadOnly: function (record) {
return record.get('readOnly');
}
}
});
在treeGrid中,
{
text: 'TC',
dataIndex: 'scrTC',
xtype: 'widgetcolumn',
widget: {
xtype: 'combo',
store: 'TCStore',
valueField: 'value',
displayField: 'displayValue',
matchFieldWidth: false,
bind: {
readOnly: '{isReadOnly}'
}
}
}
在第一次加载时,组合框按预期方式是readOnly,但是当我单击行中的编辑按钮时,它会在下面创建一个新行,并且我已设置readOnly = false。但组合框仍未绑定为readOnly false n,从而使其可编辑。