2012-06-12 19 views
0

我想让我的网格在数据库中更新底层数据时自动刷新。这不应该工作吗?或者我错过了什么?BindingSource.ListChanged事件在数据更改时不会触发 - 是否应该这样?

我在我的DataSet中创建了一个DataTable。然后我创建了一个新的表单并添加了一个DataGridView(实际上我使用的是DevExpress的XtraGrid,但我试图让它只与Microsoft控件一起工作)。我使用网格左上角的菜单将网格数据源设置为项目数据源中的数据表。然后这会自动将数据集BindingSource和TableAdapter添加到表单中。

然后,当我添加一个BindingSource.ListChanged事件时,它将在表单加载时触发几次,但在任何基础数据发生更改时触发。

当数据库中的数据发生变化时应该发生偶数火灾吗?或者只有当数据从当前VB.NET进程中的其他地方更改时才有效?

感谢您的帮助!

回答

0

此事件当底层列表发生更改或列表中的项发生更改时发生。不是在数据库更改时。

这里您的数据集或数据表从数据库中的数据加载,但加载的数据库和数据集数据之间没有实时连接。如果您需要保存/更新或刷新数据集,则必须调用相关方法来完成任务。

如果您从显示数据的相同用户界面更改数据,请调用网格刷新方法以反映对gridview的更改。

+0

感谢您的答复,但我不完全了解......有什么潜在的名单和基础数据之间的差异?除了使用计时器或其他类似的东西外,没有办法自动刷新网格吗? – Trees

1

我不确定DevExpress XtraGrid的行为,但对于大多数数据绑定列表,仅当列表被替换为全新的不同列表时,才会触发ListChanged事件。

如果列表保持不变,但项目被添加到它,则它不会被视为是一个更改列表。通常,您需要放置一些实现INotifyCollectionChanged接口的列表,以处理实时添加的项目

相关问题