具有CheckboxModel用法的多个网格

时间:2012-07-30 13:51:27

标签: gridview extjs checkbox

我已经定义了xtype,它是带有2列的简单网格和selModel:Ext.selection.CheckboxModel。

Ext.define('MySimpleType',
{
    extend: 'Ext.grid.Panel',
    alias: 'widget.MySimpleXType',
    autoScroll: true,
    store: mySimpleStore,
    selModel: Ext.create("Ext.selection.CheckboxModel", {
        checkOnly : true
    }),
    border: false,
    columns: [
        {
            header: 'Code',
            flex: 1,
            sortable: true,
            dataIndex: 'Code'
        },
        {
            header: 'Name',
            flex: 1,
            width: 80,
            sortable: true,
            dataIndex: 'Name'
        }
    ]
});

当我尝试在一个面板中多次使用此xtype时:不是为每个用法创建新的CheckboxModel,而是每个xtype使用已创建的CheckboxModel的相同实例。在这种情况下,第一个网格中会出现几个复选框列,并且不会以正确的方式运行。 你能告诉我如何解决这个问题吗? 最简单的解决方案是为每个xtype用法创建新的Ext.selection.CheckboxModel实例,但它会复制粘贴代码。

1 个答案:

答案 0 :(得分:1)

解决方案是将selModel定义移动到网格的initComponent属性:

Ext.define('MySimpleType',
{
    extend: 'Ext.grid.Panel',
    alias: 'widget.MySimpleXType',
    autoScroll: true,
    store: mySimpleStore,
    border: false,
    columns: [
        {
            header: 'Code',
            flex: 1,
            sortable: true,
            dataIndex: 'Code'
        },
        {
            header: 'Name',
            flex: 1,
            width: 80,
            sortable: true,
            dataIndex: 'Name'
        }
    ],
    initComponent: function(){
        this.selModel = Ext.create("Ext.selection.CheckboxModel", { checkOnly : true });
        this.callParent(arguments); //it's necessary to call in order to initialize parent components of this grid
    }
});