使用OleDbAdapter填充数据集后如何刷新WPF UI数据?
解决WPF VB.Net中DataTable数据更新后UI不刷新的问题
方法1:重新设置DataContext(最简便)
清空DataTable并重新填充数据后,通过先将Grid的DataContext设为Nothing再重新绑定的方式,强制UI重新读取数据源:
' 清空并重新填充数据 anaDS.Tables("Ana").Clear() anaDA.Fill(anaDS, "Ana") ' 强制触发UI刷新 AnaGrid.DataContext = Nothing AnaGrid.DataContext = anaDS.Tables("Ana")
方法2:使用BindingSource作为绑定中间层(更规范)
BindingSource实现了INotifyPropertyChanged接口,能自动向UI推送数据变更通知,适合长期维护的场景:
- 在窗口类级别声明BindingSource变量:
Private anaBindingSource As New BindingSource()
- 首次初始化绑定:
anaDA.Fill(anaDS, "Ana") anaBindingSource.DataSource = anaDS.Tables("Ana") AnaGrid.DataContext = anaBindingSource
- 后续更新数据时,无需额外操作UI会自动刷新:
anaDS.Tables("Ana").Clear() anaDA.Fill(anaDS, "Ana")
额外提示:修复SQL注入风险
你的现有SQL语句直接拼接用户输入,存在严重的安全漏洞,建议改为参数化查询:
Dim sql = "SELECT * FROM Cli WHERE Cod = ?;" anaDA.SelectCommand = New OleDbCommand(sql, conndb) anaDA.SelectCommand.Parameters.Add(New OleDbParameter("@Cod", txtCod.Text)) anaDA.Fill(anaDS, "Ana")
内容的提问来源于stack exchange,提问作者Tvuce
相关产品推荐
相关产品推荐

