当数据库中的底层数据更新时,我正在尝试让我的网格自动刷新。这不是应该起作用的吗?还是我错过了什么?
我在我的DataSet中创建了一个DataTable。然后我创建了一个新的表单并添加了一个DataGridView (实际上我使用的是DevExpress的XtraGrid,但我正在尝试让它只与微软的控件一起工作)。我使用网格左上角的菜单将网格数据源设置为项目数据源中的datatable。这会自动将dataset、BindingSource和TableAdapter添加到窗体中。
然后,当我添加一个BindingSource.ListChanged事件时,它会在表单加载时触发几次,但不会在底层数据发生更改时触发。
当数据库中的数据发生变化时,是否应该触发even?或者仅当数据从当前VB.NET进程中的其他位置更改时才会出现这种情况?
谢谢你的帮忙!
发布于 2012-06-12 11:42:50
listchanged事件将仅在绑定对象更改时触发,而不会在数据库中的数据更改时触发。
如果使用SQL sqlclient从db检索数据,则可以实现SQL依赖项http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx。
发布于 2012-06-12 11:38:55
我不确定DevExpress XtraGrid的行为,但对于大多数绑定到列表的数据,只有当列表被替换为一个全新的不同列表时,才会触发ListChanged事件。
如果列表保持不变,但添加了项目,则不会将其算作更改的列表。通常,您需要在其中放置一些实现INotifyCollectionChanged接口的列表,以处理动态添加的项
发布于 2012-06-12 11:37:23
当基础列表更改或列表中的项更改时,会发生此事件。当db更改时不会。
在这里,您的Dataset或DataTable是从数据库中的数据加载的,但是加载的数据集和dataset数据之间没有实时连接。如果你需要保存/更新或刷新数据集,那么你必须调用相关的方法来完成任务。
如果从显示数据的同一UI更改数据,请调用网格刷新方法以反映对网格视图的更改。
https://stackoverflow.com/questions/10990173
复制相似问题