Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在DevExpress C中跟踪GridControl中的行更改#_C#_Winforms_Devexpress_Devexpress Windows Ui - Fatal编程技术网

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

C# 在DevExpress C中跟踪GridControl中的行更改#,c#,winforms,devexpress,devexpress-windows-ui,C#,Winforms,Devexpress,Devexpress Windows Ui,我有一个问题,我一直在打击我的头太久了,现在,我似乎无法找到一个解决办法 我们使用的是DevExpress,我们有一个基于消息的体系结构,可以发送消息,让系统的其他组件知道具体的更改 我们的大部分应用程序都围绕着对绑定到DataTable对象的网格控件所做的更改 我们需要发送的一个更重要的消息是当网格控件上的行发生更改时。因此,如果行上的任何值发生变化,我们希望发送一条包含旧行值和新行值的消息,这样我们就有了新旧记录。我们希望在行失去焦点时发生这种情况,而不是在任何值立即更改之后。这是为了在发送

我有一个问题,我一直在打击我的头太久了,现在,我似乎无法找到一个解决办法

我们使用的是DevExpress,我们有一个基于消息的体系结构,可以发送消息,让系统的其他组件知道具体的更改

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

我们需要发送的一个更重要的消息是当网格控件上的行发生更改时。因此,如果行上的任何值发生变化,我们希望发送一条包含旧行值和新行值的消息,这样我们就有了新旧记录。我们希望在行失去焦点时发生这种情况,而不是在任何值立即更改之后。这是为了在发送消息之前,有人可以更改整行

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

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


我不知道如何在DevExpress中执行此操作。

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

这样,您就可以获得记录的两个值

要获得更详细的解释,我建议您访问以下链接:(我希望有帮助)


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

一个方法是使用DevExpress网格提供的行索引。一旦拥有更改行的行索引,就可以使用该行索引对其执行任何操作(强制转换到对象中、保存存储在行中的数据、高亮显示行等)。以下是访问网格中选定行的索引的方式:

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

由于网格控件与数据表对象绑定,我可以知道您希望跟踪的跟踪级别吗?消息调度器是否可以监控数据表对象的级别?只有当datatable处于可接受值状态时,您才能跟踪旧值/新值,或者您需要跟踪用户在devexpress网格中处于编辑状态时的情况?正如问题所述,这是针对windows控件的,而不是针对web控件的。