繁体   English   中英

如何以编程方式禁用Ext.grid.EditorGridPanel中的单元格

[英]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);
            }
        }
     }

从我的角度来看,您需要在此处管理两个不同的事情

  1. 单元格样式 ,单元格未经编辑时的外观(启用或禁用)
  2. 编辑器可用性 ,在要编辑单元格时如何反应(应该可以编辑单元格)

单元样式

对于第一个,我建议为每个单元格提供一种样式,以使其看起来处于禁用状态,这可以在渲染期间实现而不必在商店加载时尝试进行( 顺便说一句,不能确保网格项目已完全在获得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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM