【问题标题】:How to set editor for a column programmatically in a grid如何在网格中以编程方式为列设置编辑器
【发布时间】:2013-12-03 13:53:11
【问题描述】:

我有一个带有一组列的Ext.grid.Panel。此网格已过滤,根据过滤器,我想为列定义一个编辑器。

我的网格:

Ext.define('Mb.view.MyPanel', {
    extend: 'Ext.grid.Panel',
    columns: [
        {text: 'Order #', dataIndex: 'id'},
        {text: 'Action', dataIndex: 'type',
            renderer: function(value){
                if(value == 'BP') return Lang._('Veuillez choisir')
                 return ''
            }
        },

现在我想做类似的事情:

var panel = Mb.app.getView('MyPanel');
if (condition == true) {
    panel.getColumns[1].setEditor({
        xtype: 'textfield',
        ...
    })
}

显然getColumnssetEditor 方法不存在。因此,我需要另一种方法来激活该列上的编辑器。
我没有找到一种方法来访问列定义来修改它们并在之后重新渲染网格。

你能告诉我搜索的方向吗?谢谢。

【问题讨论】:

    标签: extjs extjs4.2 extjs-grid


    【解决方案1】:

    Ext.grid.column.Column 上查看getEditor() 的文档。如果您使用的是编辑插件,该插件提供了getEditor()setEditor() 的实现。根据正在编辑的列和您实现的任何自定义逻辑,您可以实现自定义 getEditor() 方法以根据情况返回您想要的任何编辑器实例。

    文档说:

    getEditor( record, defaultField ) : Ext.form.field.Field
    

    这确实说明了一小部分事实。

    • getEditor 不仅是Ext.grid.column.Column 的方法,也是配置选项。
    • 如果getEditor 被定义为配置选项函数get 被称为getEditor( record ) 并且需要返回一个Ext.grid.CellEditor
    • 这将适用于 cellediting 插件,但不适用于 rowediting 插件。

    这是一个列配置示例。它只会在选定的行上创建一个组合框:

    columns: [{
        text: 'Action', dataIndex: 'action', 
        getEditor: function(record){
            if( my logic ){
                return Ext.create('Ext.grid.CellEditor', {
                    field: Ext.create( 'Ext.form.field.ComboBox', {
                        forceSelection: true,
                        store: [[1, 'Option 1'], [2, 'Option 2']]
                    })
                })
            } else return false;
        }
    },
    

    【讨论】:

    • 我想我明白了:我写了一个getEditor(record) 并返回该行的任何字段。但是我需要在哪里定义它?作为列的配置选项?这也意味着可以有不同的编辑器,对吗?
    • 另一方面,当我想使用列的setEditor 方法时,我需要对列的引用,我不知道如何从网格对象中获取它.
    • 是的,您只需为列定义定义“getEditor()”。看看这个小提琴的例子:fiddle.sencha.com/#fiddle/2d
    • 当然,很高兴它有帮助!
    • 这是严重无证的。我编辑您的答案以包含您的示例。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2015-07-20
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多