0

グリッド付きのフォームがあります。グリッド値はストアからロードされますが、ストアはボタン クリック イベントの後にロードされます。したがって、問題は、ストアがロードされる前にグリッドが値をロードしようとすることです。

Ext.onReady(function() {
    var rowEditing = Ext.create('Ext.grid.plugin.RowEditing');

    Ext.define('userList', {
        extend: 'Ext.data.Model',
        fields: [
            {
                name: 'id',
                mapping: 'id'
            },
            {
                name: 'name',
                mapping: 'name'
            }
        ]
    });

    store = Ext.create('Ext.data.Store', {
        model: 'userList',
        autoLoad: true,
        proxy: {
            type: 'ajax',                   
            reader: {
                type: 'json',
                root: 'Users'
            }
        }
    });

    var searchUsers = new Ext.FormPanel({
        renderTo: "searchUsers",
        frame: true,            
        title: 'Search Users',
        bodyStyle: 'padding:5px',           
        width: 900,
        items: [
            {
                xtype:'textfield',
                fieldLabel: 'Username',
                name: 'userName'            
            },
            {
                xtype: 'button',
                text: 'Search',
                listeners: {
                    click: function() {
                        store.getProxy().url = url+'/lochweb/loch/users/getUser';                           
                        store.load();
                    }                       
                }
            },              
            grid = Ext.create('Ext.grid.Panel', {                   
                id: 'userGrid',
                width: 900,
                height: 300,
                frame: true,                        
                store: store,
                iconCls: 'icon-user',
                columns: [
                    {
                        text: 'ID',
                        width: 40,
                        sortable: true,
                        dataIndex: 'id'
                    },                      
                    {
                        text: 'FirstName',
                        flex: 1,
                        sortable: true,
                        dataIndex: 'firstName',
                        field: {
                            xtype: 'textfield'
                        }
                    },
                    {
                        text: 'LastName',
                        flex: 1,
                        sortable: true,
                        dataIndex: 'lastName',
                        field: {
                            xtype: 'textfield'
                        }
                    }
                ]
            })
        ]
    });

    var win = new Ext.Window({
        layout: 'fit',
        closable: false,
        resizable: true,
        plain: true,
        border: false,
        items: [searchUsers]
    });
    win.show();
});

ボタンクリックイベントの後にグリッドをロードする他の方法はありますか?

4

1 に答える 1

2

'autoLoad:false' をストアに設定するだけです。

于 2012-05-07T11:01:13.710 に答える