繁体   English   中英

在DevExpress C#中的GridControl中跟踪行更改

[英]Tracking row changes in the GridControl in DevExpress C#

我有一个问题,我一直在争吵太久了,似乎无法找到解决方案。

我们正在使用DevExpress,并且我们有一个基于消息的体系结构,该体系可调度消息,使系统的其他组件知道特定的更改。

我们的大多数应用程序都围绕对绑定到DataTable对象的网格控件所做的更改。

我们需要调度的更重要的消息之一是,当网格控件上的一行发生更改时。 因此,如果该行上的任何值发生更改,我们都希望分派一条消息,其中包含旧的行值和新的行值,以便我们记录新旧数据。 我们希望这种情况在行失去焦点时发生,而不是在立即更改任何值之后发生。 这样一来,有人可以在发送消息之前更改整个行。

我正在使用的当前解决方案不起作用,甚至不值得解释。

本质上,我需要获取旧行和新行的行值和列名的键/值列表。

我不确定如何在DevExpress中执行此操作。

一种想法是使用DevExpress网格提供的行索引。 拥有更改后的行的行索引之后,就可以使用该行索引对其进行任何处理(投射到对象中,保存该行中存储的数据,突出显示该行等)。 这是您访问网格中所选行的索引的方式:

List<int> rowHandles = gridView.GetSelectedRows().ToList();    

您可以使用DataTable中的数据创建BindingList。 然后,您需要一个新类,并且每个对象都代表DataTable中的Row。 然后,将每个对象添加到BindingList并将其用作数据源。 现在,BindingList.ListChanged事件将为网格中的每个更改的值触发。 它使您可以访问新旧价值。 也许您必须在类中实现INotifyPropertyChanged接口,才能知道单元格是否已更改。

我认为您应该使用aspxgridview.rowupdating事件,该事件将通过e.OldValues和e.NewValues属性为您提供新旧值。

因此,您可以同时拥有两个记录值。

有关更详细的说明,我建议您访问以下链接:(希望对您有所帮助)

http://www.devexpress.com/Support/Center/Question/Details/Q314701

http://www.devexpress.com/Support/Center/Question/Details/Q261712

http://www.devexpress.com/Support/Center/Question/Details/Q293847

http://www.devexpress.com/Support/Center/Question/Details/Q350500

http://www.devexpress.com/Support/Center/Question/Details/B202180

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM