dojox.grid.DataGrid - Maintien de sélection de rangée quand le tri et la pagination

StackOverflow https://stackoverflow.com/questions/4034824

  •  26-09-2019
  •  | 
  •  

Question

J'utilise un dojox.grid.DataGrid aux données d'affichage et permettent à l'utilisateur de sélectionner une ou plusieurs lignes à des éléments en surbrillance pour faire d'autres actions à.

Mon problème est que la grille utilise des index pour se rappeler les lignes sélectionnées. Si je me suis tourné sur clientSort, le tri des lignes fait des rangs ordre de changement, mais les changements de sélection aux lignes qui occupent maintenant les index de sélection avant le tri.

Pour lutter contre cela, je reçois les articles pour les lignes sélectionnées à chaque changement de sélection, puis lorsque l'événement onSort arrive, j'utilise getItemIndex (point) sur chacun des éléments dans mes articles sélectionnés collection pour obtenir les nouveaux indices de ligne et je RE- sélectionnez l'utilisation de ces indices.

Maintenant, mon problème est que les charges DataGrid données un certain nombre de lignes à la fois (il utilise la page terme pour définir un certain nombre de lignes) pour améliorer les performances. Quand une sorte se produit, il relise les données dans le nouvel ordre de tri, mais seulement à la valeur rowsPerPage (par défaut à 40). Quand j'essaie d'utiliser getItemIndex pour un élément dont la nouvelle ligne n'a pas été chargé dans la grille retourne et l'index de -1. La fonction getItemIndex () ne renvoie que l'index une fois l'utilisateur fait défiler vers le bas et la rangée est chargé.

Je ne peux pas trouver un événement qui se déclenche lorsque le chargement de la page se produit pour essayer de restaurer la sélection. Je l'ai regardé à travers le code source 1.3.2 et ne peut pas trouver quoi que ce soit. J'ai essayé la connexion à un certain nombre de fonctions privées, mais aucun travail.

Quelqu'un at-il rencontré ce et a trouvé une solution?

Merci à l'avance.

Était-ce utile?

La solution

J'ai trouvé la réponse. Le dojox.grid.DataGrid a un événement privé (_onFetchComplete) qui se déclenche chaque fois que la page suivante demande. J'utilise setTimeout pour exécuter ma fonction de restauration après une durée de 300.

Job fait!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top