2

我有一个 DevExpress TcxGrid,它的 GridView 的 OnEditValueChanged 事件附加了一个事件处理程序,该事件应该汇总其中一列中的一些数据。问题是,在更新值写入基础数据集之前,此事件在验证期间被触发。我对 TcxGrid 不太熟悉。有谁知道在数据集更新是否有办法触发事件处理程序?

4

4 回答 4

6

使用 DataSource.OnDataChange 事件怎么样?

于 2009-06-03T02:46:02.667 回答
2

我不确定这是否正是您所需要的,但我发现网格的 ImmediatePost 选项对于我需要更新摘要的情况非常有用 - 它隐藏在 cxView 的数据控制器属性下。这使得网格就像电子表格一样——只要用户在单元格中按下回车键或制表符,记录就会被发布。然后我会从数据集的 AfterPost 事件中触发我的汇总事件,也许?

(您可能已经知道这一点,但 gridview 本身内置了许多非常有用的汇总选项 - 查看列的 Summary 属性,并确保在 ViewOptions 中将 ShowFooter 设置为 true - 所以如果您的摘要是一个相对简单的总数或平均值或类似的,让网格完成所有工作并为自己节省一些工作。)

于 2009-06-03T08:03:40.387 回答
1

你用cxGrid中的cxTableView还是cxDBTableView

如果您使用 cxDBTableView,那么您在 cxDBTableView 的属性中的链接数据源的 datasource.onchange 中设置您的事件。(cxDBTableView.datacontroller.datasource)

于 2009-06-03T07:26:49.743 回答
0

我会选择 skamradt :更仔细地寻找符合您期望的事件。

否则,您可以在确保数据已初始化后插入您的事件:

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

我强烈建议您不要将其用作常规的开发习惯(通过代码使事件设置另一个回调是调试地狱的可靠方法),但如果您真的找不到任何其他方法...

于 2009-06-03T07:29:39.317 回答