Ceci fait suite à mon billet sur la manière d'obtenir des listes groupées avec entêtes et pieds.
Une question restait en suspens "comment réagirait cette liste aux modifications ?"
Une fermeture/ouverture de la table était une solution, l'inconvénient la position dans la table est perdue, il fallait donc mémoriser celle-ci avant la fermeture, puis se repositionner après la réouverture.
Il y a peu, dans ce même blog, j'indiquais qu'un problème de rafraichissement de liste en cas de changement de style au runtime était enfin résolu (cf. ce billet). J'ai pensé à utiliser cette même astuce pour régler cette question.
Succès sur toute la ligne, cerises sur le gâteau : pas de perte de position dans la table (donc du code en moins )
Tout d'abord, j'ai modifié mon programme pour pouvoir changer les montants payés.
Un TabControl avec deux panneaux fait l'affaire. Le premier panneau contient toujours la liste, le second, une zone de saisie du montant payé. Pour voir l'interaction non seulement sur l'item de liste mais aussi sur le pied de groupe je cumule maintenant non pas les montants totaux mais les montants payés. Et voilà le déroulement en image
Avant modification
Modification
Modification validée
Non seulement l'élément est modifié et reste l'élément courant, mais le montant dans le pied de groupe a changé
Bien sûr il y a un peu de code pour l'interface utilisateur, un peu pour la navigation (les tabcontrol.Next et Previous), c'est surtout "l'astuce" qui est intéressante : les LinkListControlToField.Active qui encadrent le Post de la modification.