2012-01-17 3 views
0

Я добавил панель инструментов в свою сетку Я не могу связать событие в контроллере/controll Скучно иметь право, когда код объясняет сам :)Extjs добавить событие к кнопке в сетке из контроллера

Ext.define('SA.view.user.List' ,{ 
    extend: 'Ext.grid.Panel', 
    alias : 'widget.userlist', 
    title : 'All Users', 
    store: 'Users', 
    initComponent: function() { 

    this.columns = [ 
     { 
     header: 'Id', 
     sortable: true, 
     dataIndex: 'id', 
     flex: 1, 
     field: { 
     type: 'textfield' 
     } 
    }, 
    { 
     header: 'Name', 
     sortable: true, 
     dataIndex: 'uname', 
     flex: 1, 
     field: { 
     type: 'textfield' 
     } 
    }, 
    { 
     header: 'Email', 
     sortable: true, 
     dataIndex: 'email', 
     flex: 1, 
     field: { 
     type: 'textfield' 
     } 
    } 
    ]; 

    this.callParent(arguments); 
    }, 

    dockedItems: [ 
    { 
    xtype: 'toolbar', 
    items: [{ 
     iconCls: 'icon-add', 
     text: 'Add', 
     scope: this 

    }, { 
     iconCls: 'icon-delete', 
     text: 'Delete', 
     disabled: true, 
     itemId: 'delete', 
     scope: this 

    }] 
    }, 
    { 
    xtype: 'pagingtoolbar', 
    store: 'Users', // same store GridPanel is using 
    dock: 'bottom', 
    displayInfo: true 
    } 
    ] 
}); 

Как обработчик формы событий нажмите внутри контроллера

init: function() { 
    this.control({ 
     'userlist': { 
      itemdblclick: this.editUser 
     }, 
     'userlist > toolbar/*my attempt but it doesnt work :(*/': { 
      click: this.insertUser 
     }, 
     'useredit button[action=save]': { 
      click: this.updateUser 
     } 
    }); 
}, 

Bye

+0

Я сделал трюк :) xtype: 'панель инструментов', пунктов: [{ iconCls: 'значок-надстройка', идентификатор: 'б-надстройка', текста: 'Добавить', scope: this } 'userlist> панель инструментов> кнопка # b-add' – Whisher

+0

Это не очень хорошая идея. Использование строгих идентификаторов - это плохая практика. – erlrange

ответ

3

может быть, вы можете чан GE это нравится

dockedItems: [ 
    { 
    xtype: 'toolbar', 
    items: [{ 
     iconCls: 'icon-add', 
     text: 'Add', 
     action: 'add', 
     scope: this 

    }, { 
     iconCls: 'icon-delete', 
     text: 'Delete', 
     action: 'delete', 
     disabled: true, 
     itemId: 'delete', 
     scope: this 

    }] 
    }, 


init: function() { 
    this.control({ 
     'userlist': { 
      itemdblclick: this.editUser 
     }, 
     'userlist button[action=add]': { 
      click: this.insertUser 
     }, 
     'useredit button[action=save]': { 
      click: this.updateUser 
     } 
    }); 
}, 
1

Попробуйте userlist button[text=Delete]': { click: this.insertUser } или userlist button[itemId=delete]': { click: this.insertUser }.

Эти селекторы похожи на те из CSS, поэтому обычно вы используете container > child_subcontainer another_subcontainer element[property=value]. Под контроллером используется Ext.ComponentQuery, поэтому вам может понадобиться играть с ним, чтобы проверить, что он может.

0

Просто добавление части действия также будет работать.

init: function() { 
    this.control({ 
     'userlist': { 
      itemdblclick: this.editUser 
     }, 
     'userlist > toolbar > button[action=add]': { 
      click: this.insertUser 
     }, 
     'useredit button[action=save]': { 
      click: this.updateUser 
     } 
    }); 
},