1

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

我们正在使用 DevExpress,我们有一个基于消息的架构,它可以发送消息,让系统的其他组件知道特定的变化。

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

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

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

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

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

4

3 回答 3

1

一个想法是使用 DevExpress 网格提供的行索引。一旦你有了改变行的行索引,你可以使用它做任何你想做的事情(转换成一个对象,保存存储在行中的数据,突出显示行等)使用这个行索引。这是您访问网格中选定行的索引的方式:

List<int> rowHandles = gridView.GetSelectedRows().ToList();    
于 2016-06-20T20:41:47.103 回答
-1

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

于 2013-04-15T11:26:48.350 回答
-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

于 2013-04-08T16:59:47.150 回答