DevExpress XtraGrid FocusedRowChanged cas de problème lors du changement de source de données

Ce problème a m'énerve depuis plusieurs années, et peut-être que quelqu'un ici connait une solution simple, depuis que je viens de croiser à nouveau.

QUESTION: Est-il possible d'obtenir le XtraGrid à "oublier" l'actuel axé index de ligne avant une nouvelle (différents) de la source de données est affecté à la grille?

Arrière-plan
Nous utilisons le XtraGrid comme une sorte de contrôleur pour ce qui est affiché dans un autre groupe d'une multipane Winform.

Maintenant, imaginez un scénario hypothétique où la source de données de la XtraGrid ne cesse de changer selon les sélections de menu. Élément de Menu 1 remplit la grille avec une liste d'aujourd'hui entrées dans la cafétéria: Id, Nom. Élément de Menu 2 remplit la grille avec une liste de Clients, l'utilisateur doit téléphonique de ce jour: ID, Nom. Chose importante est que ce sont de délimiter les différentes sources de données, et la grille de la source de données est affecté et réaffectés.

FAIT ESSENTIEL POUR CETTE QUESTION:
Nous voulons de la grille FocusedRowChanged événement le seul endroit où nous piège de la sélection de l'utilisateur dans le contrôleur de la grille. Nous sommes un "pas de code spaghetti" de la boutique. FocusedRowChanged est mieux qu'un événement de clic car il gère la navigation au clavier. La ligne avec l'accent contient l'ID de l'enregistrement de détail nous avons besoin de récupérer à partir de la base de données pour l'affichage dans le Panneau n ° 2. Cela fonctionne--la plupart du temps.

Voici comment cela ne fonctionne pas: disons que sur un jour donné, la liste des clients, l'utilisateur doit contacter ne contient qu'une seule ligne. Donc, la première (et la seule) ligne de la grille est la ligne. Maintenant supposons que l'utilisateur va jusqu'à le menu et sélectionne l'élément de menu pour afficher le jour de la cafétéria des plats principaux. Lorsque l'utilisateur clique sur le premier élément dans la liste des Plats, le FocusedRowChanged événement ne se déclenche PAS parce que la grille a conservé une mémoire de la ligne d'index à partir de la précédente source de données. La ligne indice n'a pas changé. Et donc la sélection de l'utilisateur ne déclenche rien.

J'ai essayé de DevExpress d'offrir une seconde de plus de la ligne orientée-objet de mode (comme distincts à partir de la ligne de l'index de l'approche axée sur lequel chaque ligne de la grille aurait un GUID et le FocusedRowChanged événement mettrait le feu à chaque fois que le GUID de l'concentre actuellement ligne diffère de le GUID de l'concentrait ligne, peu importe si la ligne d'index qui est arrivé à être le même. Cela permettrait à des changements dynamiques de la source de données et activer le comportement souhaité. Mais ils ont soulevé des objections.

Donc je vais poser ma question, Est-il possible d'obtenir le XtraGrid à "oublier" l'actuel axé index de ligne avant une nouvelle source de données est affectée à la grille?

OriginalL'auteur Tim | 2011-05-05