如何以编程方式禁用 Ext.grid.EditorGridPanel 中的单元格
How to programmatically disable cells in a Ext.grid.EditorGridPanel
我有一个使用 ExtJS 4 的 Web 应用程序,其中包含 Ext.grid.EditorGridPanel。
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);
}
}
}
在我看来,您有两件不同的事情您需要在此处进行管理:
- 单元格样式,单元格未被编辑(启用或禁用)时的外观
- 编辑器可用性,单元格即将被编辑时如何反应(应该可以编辑单元格)
单元格样式
对于第一个,我建议为每个单元格提供一种样式以使其看起来被禁用,这可以在渲染期间实现 而不是在商店加载时尝试这样做( 顺便说一句,没有什么能确保您在获得加载事件回调 后网格项目已经完全呈现。您可以 return 自定义 class 每行 通过向 Ext.grid.ViewView.[=12 提供实现=]
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;
}
}
})]
您可以找到 solutions here 两者的 工作示例 ,希望它有助于解决您的问题。
我有一个使用 ExtJS 4 的 Web 应用程序,其中包含 Ext.grid.EditorGridPanel。
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);
}
}
}
在我看来,您有两件不同的事情您需要在此处进行管理:
- 单元格样式,单元格未被编辑(启用或禁用)时的外观
- 编辑器可用性,单元格即将被编辑时如何反应(应该可以编辑单元格)
单元格样式
对于第一个,我建议为每个单元格提供一种样式以使其看起来被禁用,这可以在渲染期间实现 而不是在商店加载时尝试这样做( 顺便说一句,没有什么能确保您在获得加载事件回调 后网格项目已经完全呈现。您可以 return 自定义 class 每行 通过向 Ext.grid.ViewView.[=12 提供实现=]
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;
}
}
})]
您可以找到 solutions here 两者的 工作示例 ,希望它有助于解决您的问题。