J'étends GridPanel avec Ext.define () (Ext v4).
J'ai besoin d'obtenir les données de la ligne lorsqu'une ligne de la grille est double-cliquée. À ce stade, je ne peux même pas faire fonctionner l'écouteur d'événements:
Ext.define('Application.usersGrid', {
extend: 'Ext.grid.GridPanel',
alias: 'widget.usersgrid',
viewConfig: {
listeners: {
dblclick: function(dataview, index, item, e) {
alert('dblclick');
}
}
},
...
Qu'est-ce qui ne va pas ici?
Si quelqu'un a besoin de réponse, c'est la bonne manière:
Ext.define('Application.usersGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.usersgrid',
viewConfig: {
listeners: {
itemdblclick: function(dataview, record, item, index, e) {
alert('itemdblclick');
}
}
},
...
http://dev.sencha.com/new/ext-js/4-0/api/Ext.grid.GridView#event-itemdblblick
Vous n'avez pas besoin de mettre l'auditeur dans le viewconfig. Voici ma configuration de travail:
listeners : {
itemdblclick: function(dv, record, item, index, e) {
alert('working');
}
},
Une autre chose est que vous semblez avoir utilisé Ext.grid.GridPanel
dans la propriété d’extension. Mais dans la documentation, c'est Ext.grid.Panel
. Mais même avec gridpanel, tout semble bien fonctionner.
Je suggérerais d’utiliser les termes d’ext JS 4, car cela pourrait entraîner une rupture d’application ultérieurement dans les versions 4.x.
Maintenant, si vous utilisez la nouvelle architecture MVC, vous souhaiterez déplacer ces actions vers le contrôleur plutôt que vers la vue. Vous pouvez vous reporter au guide MVC Architecture pour plus de détails.
Avec l'approche MVC dans ExtJS 4, il existe un autre moyen intelligent de définir de tels gestionnaires. Quelques exemples de code:
Ext.define('App.controller.Documents', {
extend: 'Ext.app.Controller',
stores: ['Documents'],
models: ['Document'],
views: [
'document.List',
'document.Edit',
'document.Preview'
],
init: function() {
this.control({
/*
* a cool way to select stuff in ExtJS 4
*/
'documentlist': {
itemdblclick: this.editDocument
},
/*
* simple access to components
*/
'documentedit button[action=save]': {
click: this.updateDocument
},
});
},
editDocument: function(grid, record) {
var view = Ext.widget('documentedit');
view.down('form').loadRecord(record);
},
updateDocument: function(button) {
var win = button.up('window'), // new selection API
form = win.down('form'), // in ExtJS 4
record = form.getRecord(),
values = form.getValues();
record.set(values);
win.close();
}
});
listeners: {
select: 'xxxx',
itemdblclick: function (dv, record, item, index, e) {
var myBtn = Ext.getCmp('btnEdit');
myBtn.onClick();
}
},