为什么 extjs 中的网格面板处理程序正在执行而不被调用?

发布于 2024-12-25 09:06:42 字数 3532 浏览 0 评论 0原文

问题

您好,不方便的是,当我加载应用程序时,处理程序会自动执行,这是网格的代码:

   Ext.define('masterDataGrid', {

        extend : 'Ext.grid.Panel',
        windowItems : null,
        addWin : null,


        initComponent : function() {
            var me = this;
            Ext.applyIf(me, {
                        tbar : [{
                                    text : 'Add',
                                    handler :me.onAdd,
                                    scope : me
                                }, '-', {
                                    text : 'Delete',
                                    handler : me.onDelete,
                                    scope : me
                                }, '-']
                    });


            me.callParent(arguments);
        },


        getAddWindow : function() {
            if (!this.addWin) {
                this.addWin = new windowPop({
                            buttons : [{
                                        text : 'i_OK',
                                        handler : this.winOk()
                                    }, {
                                        text : 'i_Cancel',
                                        handler : this.winCancel()
                                    }]
                        });
                this.addWin.add(this.windowItems);
            }
            return this.addWin;
        },


        onAdd : function() {
        var addWindow = this.getAddWindow();
        addWindow.show();
        },


    });

我正在从它扩展的另一个类中调用这个mastergrid,这是代码:

 Ext.define('confEmailEmail', {
        extend : 'masterDataGrid',
        initComponent : function() {
            var me = this;
            me.columns = [{
                        id : 'code',
                        header : 'code',
                        dataIndex : 'code',
                        width : 220
                    }, {
                        header : 'description',
                        dataIndex : 'description',
                        width : 130
                    }, {
                        header : 'multiply',
                        dataIndex : 'multiply',
                        width : 70,
                        align : 'right'
                    }, {
                        header : 'cyrcletime',
                        dataIndex : 'cycletime',
                        width : 95
                    }];


            me.windowItems = [{
                        xtype : 'combobox',
                        id : 'cb_input',
                        fieldLabel : 'i_Input',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }, {
                        xtype : 'checkbox',
                        id : 'chk_invert',
                        fieldLabel : 'i_Invert',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }, {
                        xtype : 'combobox',
                        id : 'cb_activeBy',
                        fieldLabel : 'i_Active by',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }];


            me.callParent(arguments);


        }
    });

当我单击添加按钮时,它应该打开窗口来添加新行,但每次执行整个应用程序时它都会显示。

感谢您的任何帮助。

Problem

Hello the inconvenient is that when I load my application the handler is automatically executing, this is the code of the grid:

   Ext.define('masterDataGrid', {

        extend : 'Ext.grid.Panel',
        windowItems : null,
        addWin : null,


        initComponent : function() {
            var me = this;
            Ext.applyIf(me, {
                        tbar : [{
                                    text : 'Add',
                                    handler :me.onAdd,
                                    scope : me
                                }, '-', {
                                    text : 'Delete',
                                    handler : me.onDelete,
                                    scope : me
                                }, '-']
                    });


            me.callParent(arguments);
        },


        getAddWindow : function() {
            if (!this.addWin) {
                this.addWin = new windowPop({
                            buttons : [{
                                        text : 'i_OK',
                                        handler : this.winOk()
                                    }, {
                                        text : 'i_Cancel',
                                        handler : this.winCancel()
                                    }]
                        });
                this.addWin.add(this.windowItems);
            }
            return this.addWin;
        },


        onAdd : function() {
        var addWindow = this.getAddWindow();
        addWindow.show();
        },


    });

And I'm calling this mastergrid form another class that extends from it, this is the code:

 Ext.define('confEmailEmail', {
        extend : 'masterDataGrid',
        initComponent : function() {
            var me = this;
            me.columns = [{
                        id : 'code',
                        header : 'code',
                        dataIndex : 'code',
                        width : 220
                    }, {
                        header : 'description',
                        dataIndex : 'description',
                        width : 130
                    }, {
                        header : 'multiply',
                        dataIndex : 'multiply',
                        width : 70,
                        align : 'right'
                    }, {
                        header : 'cyrcletime',
                        dataIndex : 'cycletime',
                        width : 95
                    }];


            me.windowItems = [{
                        xtype : 'combobox',
                        id : 'cb_input',
                        fieldLabel : 'i_Input',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }, {
                        xtype : 'checkbox',
                        id : 'chk_invert',
                        fieldLabel : 'i_Invert',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }, {
                        xtype : 'combobox',
                        id : 'cb_activeBy',
                        fieldLabel : 'i_Active by',
                        margin : '5 0 0 5',
                        style : 'font-weight:bold',
                        labelWidth : 120
                    }];


            me.callParent(arguments);


        }
    });

it supposed to open the window to add a new row when I click on the add button but it is showing every time I execute the whole application.

Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

°如果伤别离去 2025-01-01 09:06:42

我明白了,这是因为onAdd是Ext.grid.Panel的一个方法,然后当它尝试加载应用程序时它访问我的方法onAdd,因为他认为我覆盖了Ext.grid.Panel的onAdd方法。

I got it, it is because onAdd is a method for Ext.grid.Panel, then when it is trying to load the application it access to my method onAdd because he thinks that I had overwrote the method onAdd of Ext.grid.Panel.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文