[英]How to programmatically disable cells in a Ext.grid.EditorGridPanel
我有一个使用ExtJS 4并包含Ext.grid.EditorGridPanel的Web应用程序。
Ext.grid.EditorGridPanel的其中一列具有组合框编辑器,当存储根据存储中另一个字段的值加载时,我想以编程方式禁用该编辑器。
看起来这应该很简单-但到目前为止似乎没有任何效果。
当网格存储加载时,我有一个侦听器来检查每一行并根据另一个字段的值禁用索引4中的组合框。
我唯一无法工作的实际上是禁用组合框。
有什么建议么?
这是伪代码。 提前致谢
listeners: {
'load': function(st, records, options) {
var view = getMyEditorGridPanel().getView();
for (var i = 0; i < this.getCount(); i++) {
if (store.getAt(i).get('setDisabled') === 'Y') {
//The cell at index 4 has a combobox editor - I CAN'T GET IT TO DISABLE!!
view.getCell(i,4).setDisabled(true);
}
}
}
从我的角度来看,您需要在此处管理两个不同的事情 :
对于第一个,我建议为每个单元格提供一种样式,以使其看起来处于禁用状态,这可以在渲染期间实现,而不必在商店加载时尝试进行( 顺便说一句,不能确保网格项目已完全在获得load事件回调之后呈现 )。 您可以通过为 Ext.grid.ViewView 提供实现来为每行返回一个自定义类。 getRowClass
viewConfig: {
getRowClass: function(record, rowIndex, rowParams, store) {
return record.get("disabled") ? "mail-disabled" : "";
}
}
您还需要处理 Ext.grid.plugin.CellEditingView 。 beforeedit 事件,并提供自定义逻辑以确定编辑器何时可用
plugins: [
Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1,
listeners: {
beforeedit: function(editor, e, eOpts) {
return e.record.get("disabled") == false;
}
}
})]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.