0

2列の単純なグリッドであるxtypeと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を1つのパネルで複数回使用しようとすると、使用ごとに新しいCheckboxModelを作成する代わりに、各xtypeは既に作成されたCheckboxModelの同じインスタンスを使用します。この場合、いくつかのチェックボックス列が最初のグリッドに表示され、適切に動作しません。これを修正する方法を教えてください。最も簡単な解決策は、xtypeの使用ごとに新しいExt.selection.CheckboxModelインスタンスを作成することですが、コードをコピーして貼り付けます。

4

1 に答える 1

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
    }
});
于 2012-08-02T09:10:12.307 に答える