You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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推送数据变更通知,适合长期维护的场景:

  1. 在窗口类级别声明BindingSource变量:
Private anaBindingSource As New BindingSource()
  1. 首次初始化绑定:
anaDA.Fill(anaDS, "Ana")
anaBindingSource.DataSource = anaDS.Tables("Ana")
AnaGrid.DataContext = anaBindingSource
  1. 后续更新数据时,无需额外操作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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:49:56