Gxt: Problème lors d'une édition dans une EditorGrid
Bonjour,
J'utilise une EditorGrid de la librairie (Ext GWT) que je remplie à l'aide d'un BasePagingLoader comme ceci afin de charger séquentiellement mes données
selon la position de l'ascenseur vertical de ma grille.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| loader = new BasePagingLoader<PagingLoadResult<DataModel>>(new RpcProxy<PagingLoadResult<DataModel>>() {
@Override
protected void load(Object aLoadConfig, final AsyncCallback<PagingLoadResult(<DataModel>> callback)
{
config.loadConfig = (BasePagingLoadConfig) aLoadConfig;
ConfigurationServiceAsync service = ConfigurationService.Util.getInstance();
service.getData(config.loadConfig, new AsyncCallback<Data>() {
@Override
public void onSuccess(Data result)
{
BasePagingLoadResult<DataModel> loadResult = new BasePagingLoadResult<DataModel> (config.loadConfig.getOffset(), result.getData());
callback.onSuccess(loadResult);
}
});
}
}); |
Code:
1 2 3 4
|
...
ListStore<DataModel> gridStore = new ListStore<DataModel>(loader);
EditorGrid grid = new EditorGrid<DataModel> (gridStore, columnModel)... |
Mon problème est que lorsque j'édite une ligne de ma grille(via un double clic sur une cellule) j'obtiens la valeur d'une autre ligne car l'index transmis
ne correspond pas à celui du store.
J'ai essayé de surcharger la méthode onDoubleClick(GridEvent<DataModel> e)
afin de "réindexer" mon store convenablement comme ci-dessous mais sans succès..
Ca me semble d'ailleur très maladroit de vider le store et d'en refaire un autre...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| editGrid = new EditorGrid(<DataModel>(store, columnModel)
{
@Override
protected void onDoubleClick(GridEvent<DataModel> e) {
int rowIndex = e.getRowIndex();
store.removeAll();
ArrayList<DataModel> reindexList = new ArrayList<DataModel>();
// remplissage de reindexList
store.add(reindexList);
}
if (editSupport.onDoubleClick(e)) {
return;
}
super.onDoubleClick(e);
};
}; |
A mon avis il n'est pas nécessaire de surcharger la méthode onDoubleClick(..) mais je ne comprend pas pourquoi, par défaut, le GridEvent ne transmet le "bon" index..
il ne transmet que celui qui est visible, i.e si je double click sur la 5ème ligne de ma grille, e.getRowIndex vaut 4..
Si quelqu'un a une idée.
Merci d'avance !