我有一个 DevExpress TcxGrid,它的 GridView 的 OnEditValueChanged 事件附加了一个事件处理程序,该事件应该汇总其中一列中的一些数据。问题是,在更新值写入基础数据集之前,此事件在验证期间被触发。我对 TcxGrid 不太熟悉。有谁知道在数据集更新后是否有办法触发事件处理程序?
4 回答
使用 DataSource.OnDataChange 事件怎么样?
我不确定这是否正是您所需要的,但我发现网格的 ImmediatePost 选项对于我需要更新摘要的情况非常有用 - 它隐藏在 cxView 的数据控制器属性下。这使得网格就像电子表格一样——只要用户在单元格中按下回车键或制表符,记录就会被发布。然后我会从数据集的 AfterPost 事件中触发我的汇总事件,也许?
(您可能已经知道这一点,但 gridview 本身内置了许多非常有用的汇总选项 - 查看列的 Summary 属性,并确保在 ViewOptions 中将 ShowFooter 设置为 true - 所以如果您的摘要是一个相对简单的总数或平均值或类似的,让网格完成所有工作并为自己节省一些工作。)
你用cxGrid中的cxTableView还是cxDBTableView
如果您使用 cxDBTableView,那么您在 cxDBTableView 的属性中的链接数据源的 datasource.onchange 中设置您的事件。(cxDBTableView.datacontroller.datasource)
我会选择 skamradt :更仔细地寻找符合您期望的事件。
否则,您可以在确保数据已初始化后插入您的事件:
procedure TMyGrid.MyProc_OnDataLoaded( Sender : TObject ); //I made up this event, I'm not sure it exists
begin
Self.OnEditValueChanged := MyProc_OnEditValueChanged;
end;
我强烈建议您不要将其用作常规的开发习惯(通过代码使事件设置另一个回调是调试地狱的可靠方法),但如果您真的找不到任何其他方法...