Comment puis-je tirer un gestionnaire d'événements après une valeur dans un TcxGrid a changé?

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

Question

J'ai un DevExpress TcxGrid, avec un gestionnaire d'événement attaché à l'événement OnEditValueChanged de son GridView qui est censé résumer des données dans l'une des colonnes. Le problème est, cet événement se tiré lors de la validation, avant que la valeur mise à jour a été écrit à l'ensemble de données sous-jacente. Je ne suis pas trop familier avec le TcxGrid. Est-ce que quelqu'un sait s'il y a un moyen de tirer un gestionnaire d'événements après l'ensemble de données a été mis à jour?

Était-ce utile?

La solution

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

Autres conseils

Je ne sais pas si cela est exactement ce dont vous avez besoin, mais je l'ai trouvé l'option ImmediatePost de la grille très utile pour les situations où je dois mettre à jour un résumé - il est enterré sous sa propriété contrôleur de données de la cxView . Cela rend l'acte de grille comme une feuille de calcul - dès que l'utilisateur appuie entrer ou onglet dans une cellule, le dossier est également postée. Alors j'aurais mon feu d'événement résumant de l'événement AfterPost du jeu de données, peut-être?

(Vous savez probablement déjà, mais le gridview lui-même a beaucoup d'options récapitulatives très utiles construit en elle - regardez les propriétés analytiques des colonnes, et assurez ShowFooter vous est à true dans les viewoptions - donc si votre résumé est un total ou moyenne ou similaire relativement simple, laissez la grille tout faire et vous épargner un travail.)

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)

Je partirais avec skamradt:. Examiner plus attentivement pour un événement qui correspond à vos attentes

Dans le cas contraire, vous pouvez brancher votre événement après s'être assuré que vos données est initialisée:

 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 vivement de ne pas utiliser cela comme une Habitude régulière Developping (faire un événement défini un autre rappel par le code est un moyen sûr de débogage enfer), mais si vraiment vous ne trouvez pas d'autre façon de le faire. ..

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