Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 4.1-第二次在CellEditing插件中列出不起作用_Extjs_Tree_Extjs4.1_Treegrid - Fatal编程技术网

Extjs 4.1-第二次在CellEditing插件中列出不起作用

Extjs 4.1-第二次在CellEditing插件中列出不起作用,extjs,tree,extjs4.1,treegrid,Extjs,Tree,Extjs4.1,Treegrid,我定义了一个带有插件的树ID,比如 Ext.define('MyExample', { extend: 'Ext.tree.Panel', id: 'example', alias: 'example', .... plugins: [ Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1,

我定义了一个带有插件的树ID,比如

Ext.define('MyExample', {
        extend: 'Ext.tree.Panel',   
        id: 'example',
        alias: 'example',
        ....
        plugins: [
            Ext.create('Ext.grid.plugin.CellEditing', {
                clicksToEdit: 1,
                listeners: {
                    beforeedit: function(plugin, edit){
                        alert('don't run second time');
                    }
                }
            })
        ],
        ...
我有一个按钮,当我点击这个按钮将调用下面的窗口(这个窗口上面有treeGrid)

第一次一切正常,但当我第一次关闭窗口并单击按钮再次调用窗口时,CellEditing仍在工作,但侦听器不工作?
如何解决这个问题谢谢

编辑
请参阅中的示例代码
在我第一次点击按钮的时候。一切正常

但当我关闭示例窗口并再次打开它时,我尝试再次单击阻止的单元格,我得到一个类似于



如何修复此错误?谢谢

可能需要完成编辑单元格,请尝试完成:

...
beforeedit: function(plugin, edit){
     alert('don't run second time');
     plugin.completeEdit();
}

Sencha:

可能需要完成编辑单元格,请尝试完成:

...
beforeedit: function(plugin, edit){
     alert('don't run second time');
     plugin.completeEdit();
}

Sencha:

我在这里列出了一个工作示例:

我认为您的列的问题在于,它的dataIndex期望编辑器值是布尔类型(因为“block”被设置为datIndex而不是“date”)。我假设您使用“block”字段只是为了识别哪些被阻止进行编辑。我修改了此处提供的小提琴:


我在这里总结了一个工作示例:

我认为您的列的问题在于,它的dataIndex期望编辑器值是布尔类型(因为“block”被设置为datIndex而不是“date”)。我假设您使用“block”字段只是为了识别哪些被阻止进行编辑。我修改了此处提供的小提琴:


每次单击按钮都会重新创建窗口。这种重新创建可能会弄乱配置对象,或者破坏其中的关联或引用,或者类似的事情。尝试每次重复使用窗口,将按钮代码替换为以下内容:

    Ext.create('Ext.Button', {
        text: 'Click me',
        visible: false,
        renderTo: Ext.getBody(),

        handler: function(button) {
            if(!button.myWindow)
            {
                button.myWindow = Ext.create('Ext.window.Window', {
                   title: 'Example',
                   height     : 300,
                   width      : 500,
                   layout: 'border',
                   closeAction: 'hide',
                   items: [{            
                            region: 'center',
                            floatable:false,
                            layout:'fit',
                            xtype: 'example',
                            margins:'1 1 1 1'
                        }
                    ]
                 });
            }
            button.myWindow.show();
        }
    });

每次单击按钮都会重新创建窗口。这种重新创建可能会弄乱配置对象,或者破坏其中的关联或引用,或者类似的事情。尝试每次重复使用窗口,将按钮代码替换为以下内容:

    Ext.create('Ext.Button', {
        text: 'Click me',
        visible: false,
        renderTo: Ext.getBody(),

        handler: function(button) {
            if(!button.myWindow)
            {
                button.myWindow = Ext.create('Ext.window.Window', {
                   title: 'Example',
                   height     : 300,
                   width      : 500,
                   layout: 'border',
                   closeAction: 'hide',
                   items: [{            
                            region: 'center',
                            floatable:false,
                            layout:'fit',
                            xtype: 'example',
                            margins:'1 1 1 1'
                        }
                    ]
                 });
            }
            button.myWindow.show();
        }
    });

这里的问题是,您正在树网格的插件数组中使用Ext.create。这样做的效果是创建一次并将结果附加到定义的类中

如果关闭窗口,窗口中的所有资源都将被销毁。第二次实例化树面板时,插件不在那里。看看这把小提琴:我知道你的问题是什么。看看


这里的问题是,您正在树网格的插件数组中使用Ext.create。这样做的效果是创建一次并将结果附加到定义的类中

如果关闭窗口,窗口中的所有资源都将被销毁。第二次实例化树面板时,插件不在那里。看看这把小提琴:我知道你的问题是什么。看看


在的
initComponent
上创建插件panel@MMT我尝试初始化initComponent:function(){},但错误是(TypeError:a是未定义的ext-all.js第21行)?@MMT你能修复我的代码吗?我试图添加initComponent,但我认为initComponent不存在?在的
initComponent
上创建插件panel@MMT我尝试初始化initComponent:function(){},但错误是(TypeError:a是未定义的ext-all.js第21行)?@MMT你能修复我的代码吗?我尝试添加initComponent,但我认为initComponent不存在?我在代码中尝试:plugin.completeEdit();if(edit.record.get('block'))返回false;但是不工作:(我在我的代码中尝试:plugin.completedit();if(edit.record.get('block'))返回false;但是不工作:(这不工作:(.我希望我的日期单元格将是block,如果该单元格的block=true,但在我的代码中,这是第一次使用的唯一block?我想你不明白我的问题。请查看我的编辑。我只是解释了我的问题。我想你是对的。看看我下面的其他答案。这不起作用:(.我希望我的日期单元格是block,如果该单元格的block=true,但在我的代码中,这是第一次出现的唯一block?我想你不明白我的问题。请看我的编辑。我只是解释了我的问题。我想你是对的。看看下面我的另一个答案。请投票澄清我的答案。虽然我认为从实际意义上讲,我的answer可能是整体上最好的路线。谢谢你。我发现了一些问题,问题是cellediting和他们使用initComponent函数。我尝试创建initComponent函数,但失败了。我认为TreeGrid没有initComponent函数?请投票澄清我的答案。虽然我认为在实际意义上,我的答案可能不是他是整体上最好的路线。谢谢你。我发现了一些问题,问题是单元格编辑和使用initComponent函数。我尝试创建initComponent函数,但失败了。我认为TreeGrid没有initComponent函数?
     {
        ptype : 'cellediting',
        clicksToEdit: 1,
        listeners: {
            beforeedit: function(plugin, edit){
                console.log('EDITOR');
                if (edit.record.get('block')) {
                    alert('this cell have been blocked');
                    return false;
                }
            }
        }
    }