我有一个GridView
DataSource
被设置为DataTable
。每隔几秒就会通过一些后端逻辑更新DataTable
,此时会调用一个委托来刷新GridView
。
目前我只是重置DataSource
,但这会导致问题 - 它会中断网格视图中正在进行的任何编辑,并使选择“跳转”到左上角的单元格。
更新逻辑基本上创建一个新的(与列和行相同)DataTable
。
有没有任何标准方法可以做到没有任何缺点?我是唯一一个逐行更新当前DataSource
,以编程方式插入值的选项吗?
谢谢!
答案 0 :(得分:1)
您应该使用支持更改通知的BindingList
或某些数据源。
答案 1 :(得分:1)
我对这个问题中的许多事情感到困惑。如果您使用的是GridView
而不是DataGridView
,那么您使用的是ASP.NET,WPF或.NET 1.1。这是什么?
下一步:您是否完全创建了新的DataTable
?当然,重置DataSource
时控件将重置。它不知道您的新DataTable
的架构与它所替换的架构相同。它必须通过列并重新建立绑定。
此外,当然它正在丢失当前行。当前行属于旧DataTable
,而不是新行。
如果您希望绑定控件在更新基础数据源时保持其状态,更新基础数据源,请不要将其替换为新数据源。
答案 2 :(得分:0)
您的更新是否在后台线程上进行?我不知道它是否适用于你的场景,但你可以尝试这个threaded binding list;看到示例,看工人快乐地编辑网格。