Dans une grille ExtJS, je peux obtenir l'index de l'élément de données sélectionné comme ceci:Comment obtenir les données d'une ligne qui a été double-cliquée dans une grille ExtJS?
grid.getSelectionModel().on('rowselect', function(sm, index, rec){
changeMenuItemInfoArea(menuItemApplication, 'you are on row with index ' + index);
var row_number_parts = rec.id.split('-'); // rec.id = e.g. "ext-record-1"
var selected_index = row_number_parts[2] - 1;
alert(selected_index);
});
Mais comment puis-je obtenir l'index de l'élément de données sélectionnées sur un double clic?
Quand je fais cela:
listeners: {
'rowdblclick': function(grid, rowindex, e){
console.log(...);
}
}
à la fois grid
et e
ne semblent pas avoir l'information nécessaire et rowindex
est pas utile, car si l'utilisateur a recours une colonne, puis l'indice de la La ligne double-cliqué n'est pas nécessairement l'index de l'ensemble de données qui a chargé la grille.
Addendum
Merci @McStretch, j'ai finalement résolu la question à l'en mettant l'id
dans la liste des éléments, se cachant la colonne id, puis d'envoyer l'identifiant à la page d'édition, comme ceci:
listeners: {
'rowdblclick': function(grid, index, rec){
var id = grid.getSelectionModel().getSelected().json[0];
go_to_page('edit_item', 'id=' + id);
}
}
Ne faites pas cela. L'index est correct, même après tri. Le tri est géré au niveau du magasin, de sorte que l'index correspondra entre le magasin et la grille. –
merci, ce n'était pas clair ce que l'index fait référence à –