0

我有一个面板layout: border,看起来像http://jsfiddle.net/rpcbX/

在此处输入图像描述

当我从中心区域单击add西部区域上的按钮removeAll并再次添加一些东西时,在此示例中,我添加和删除网格面板。

但我的网格面板有CheckboxModel. 并且在我再次添加网格面板后无法删除。按照下面的步骤你会看到错误。

1.运行我的应用程序并单击add按钮
2.单击checkall网格面板上的 按钮
3.add再次单击按钮

现在你会看到错误,选择了选择,你不能点击checkall按钮来工作。看起来像

在此处输入图像描述

我想当我单击添加按钮时,中心区域将有一个新的网格面板(新状态)

怎么解决 谢谢

p/s:我在 extjs4.2.1 上进行了测试,结果更糟。我不能点击行上的复选框(我想我点击了那个但图形没有改变)

这是我使用add按钮的代码

                text: 'add',
                handler: function() {
                    panel.down('panel[region="center"]').removeAll();
                    var grid = new Example();
                    panel.down('panel[region="center"]').add(grid);
                }
4

1 回答 1

2

您的示例不起作用,因为您正在向原型添加实例,并且那些存储实例,selModel 可能列将在所有实例之间共享Example。您的示例遇到了未定义的行为。原型上的非原语通常是一件坏事,出于某种原因,我经常在 stackoverflow 上看到它们。 是更深入的解释。

这样做Example应该有助于解决您的问题。

Ext.define('Example', {
    extend: 'Ext.grid.Panel',
    title: 'Simpsons',
    initComponent: function() {
        Ext.apply(this, {
            selModel: Ext.create('Ext.selection.CheckboxModel', {
                checkOnly: true,
                mode: 'MULTI'
            }),
            store: Ext.create('Ext.data.Store', {
                fields: ['name', 'email', 'phone'],
                data: {
                    'items': [{
                            'name': 'Lisa',
                            "email": "lisa@simpsons.com",
                            "phone": "555-111-1224"
                        }, {
                            'name': 'Bart',
                            "email": "bart@simpsons.com",
                            "phone": "555-222-1234"
                        }, {
                            'name': 'Homer',
                            "email": "home@simpsons.com",
                            "phone": "555-222-1244"
                        }, {
                            'name': 'Marge',
                            "email": "marge@simpsons.com",
                            "phone": "555-222-1254"
                        }
                    ]
                },
                proxy: {
                    type: 'memory',
                    reader: {
                        type: 'json',
                        root: 'items'
                    }
                }
            }),
            columns: [{
                    header: 'Name',
                    dataIndex: 'name',
                    editor: {
                        xtype: 'textfield'
                    }
                }, {
                    header: 'Email',
                    dataIndex: 'email',
                    flex: 1
                }, {
                    header: 'Phone',
                    dataIndex: 'phone'
                }
            ]
        });

        this.callParent();
    }

});
于 2013-09-27T21:43:07.533 回答