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

时间:2013-04-08 02:46:47

标签: c# winforms devexpress devexpress-windows-ui

我有一个问题,我现在已经反对太久了,我似乎无法找到解决方案。

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:1)

这样做的一个想法是使用DevExpress网格提供的行索引。获得已更改行的行索引后,您可以使用此行索引执行任何所需操作(转换为对象,保存存储在行中的数据,突出显示行等)。这是您访问网格中所选行的索引的方法:

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

答案 1 :(得分:-1)

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

答案 2 :(得分:-3)

我认为你应该使用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