2009-06-03 10 views
2

J'ai un DevExpress TcxGrid, avec un gestionnaire d'événements attaché à l'événement OnEditValueChanged de son GridView qui est censé résumer certaines données dans l'une des colonnes. Le problème est que cet événement est déclenché pendant la validation, avant que la valeur mise à jour ait été écrite dans le jeu de données sous-jacent. Je ne connais pas trop le TcxGrid. Est-ce que quelqu'un sait s'il existe un moyen de déclencher un gestionnaire d'événements après l'ensemble de données a été mis à jour?Comment puis-je déclencher un gestionnaire d'événements après la modification d'une valeur dans un TcxGrid?

Répondre

6

Qu'en est-il de l'utilisation de l'événement DataSource.OnDataChange?

+0

C'était la seule idée qui a fonctionné. –

1

Utilisez-vous le cxTableView ou cxDBTableView dans le cxGrid

si vous utilisez le cxDBTableView alors vous définissez votre événement dans le datasource.onchange de la source de données liée à la propriété du cxDBTableView. (cxDBTableView .datacontroller.datasource)

0

J'irais avec skamradt: cherchez plus attentivement un événement qui correspond à vos attentes.

Sinon, vous pouvez brancher votre événement après s'être assuré que vos données sont initialisés:

procedure TMyGrid.MyProc_OnDataLoaded(Sender : TObject); //I made up this event, I'm not sure it exists 
begin 
    Self.OnEditValueChanged := MyProc_OnEditValueChanged; 
end; 

Je vous conseille fortement de ne pas utiliser cela comme une Habitude régulière Developping (faire un événement définir un autre rappel par le code est un moyen sûr de déboguer l'enfer), mais si vous ne trouvez vraiment pas d'autre moyen de le faire ...

2

Je ne sais pas si c'est exactement ce dont vous avez besoin, mais j'ai trouvé l'option ImmediatePost de la grille est très utile pour les situations où j'ai besoin de mettre à jour un résumé - il est enterré sous sa propriété Data Controller de la cxView. Cela fait que la grille agit comme une feuille de calcul - dès que l'utilisateur appuie sur Entrée ou sur Tab dans une cellule, l'enregistrement est affiché. Ensuite, j'aurais peut-être mon feu d'événement résumant de l'événement AfterPost de l'ensemble de données, peut-être?

(Vous le savez probablement déjà mais le gridview lui-même a beaucoup d'options de résumé très utiles intégrées - regardez les propriétés de résumé des colonnes, et assurez-vous que ShowFooter est défini sur true dans ViewOptions - donc si votre résumé est un total relativement simple ou moyenne ou similaire, laissez la grille tout faire et économisez-vous du travail.)

+0

Un simple résumé ne fonctionnera pas. J'aime l'idée de ImmediatePost, cependant. Je vais vérifier quand j'arriverai à travailler ce matin et voir si ça fait ce dont j'ai besoin. –

+0

Non. Il s'avère que cela ne le fait pas poster avant que le gestionnaire d'événements se déclenche. –

Questions connexes