Как я могу запустить обработчик событий после изменения значения в TcxGrid?

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

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top