Как я могу запустить обработчик событий после изменения значения в TcxGrid? - PullRequest
2 голосов
/ 03 июня 2009

У меня есть DevExpress TcxGrid, с обработчиком событий, прикрепленным к его событию OnEditValueChanged GridView, которое должно суммировать некоторые данные в одном из столбцов. Проблема в том, что это событие вызывается во время проверки, прежде чем обновленное значение будет записано в базовый набор данных. Я не слишком знаком с TcxGrid. Кто-нибудь знает, есть ли способ запустить обработчик событий после набора данных был обновлен?

Ответы [ 4 ]

6 голосов
/ 03 июня 2009

А как насчет использования события DataSource.OnDataChange?

2 голосов
/ 03 июня 2009

Я не уверен, что это именно то, что вам нужно, но я обнаружил, что опция сетки ImmediatePost очень полезна в ситуациях, когда мне нужно обновить сводку - она ​​скрыта под свойством Data Controller в cxView , Это заставляет сетку действовать как электронная таблица - как только пользователь нажимает ввод или вкладку в ячейке, запись публикуется. Тогда, возможно, я бы запустил суммирующее событие из события AfterPost набора данных?

(Вы, вероятно, уже знаете это, но само представление сетки имеет много очень полезных встроенных опций суммирования - посмотрите на свойства Summary столбцов и убедитесь, что ShowFooter имеет значение true в ViewOptions - так что если ваше резюме является относительно простым общим или средним или аналогичным, пусть сетка сделает все это и сэкономит вам немного работы.)

1 голос
/ 03 июня 2009

Используете ли вы cxTableView или cxDBTableView в cxGrid

если вы используете cxDBTableView, то вы устанавливаете свое событие в datasource.onchange связанного источника данных в свойстве cxDBTableView. (cxDBTableView .datacontroller.datasource)

0 голосов
/ 03 июня 2009

Я бы пошел со skamradt: более внимательно ищите событие, которое соответствует вашим ожиданиям.

В противном случае вы можете подключить свое мероприятие после того, как убедитесь, что ваши данные инициализированы:

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

Я бы настоятельно советовал вам НЕ использовать это в качестве обычного развивающегося хаббита (создание события, устанавливающего другой обратный вызов через код, - верный способ отладки ада), но если вы действительно не найдете другого способа сделать это. ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...