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

VB.NET中DataTable.Select不识别DataGridView修改后的数据问题

问题

通过SQL查询填充DataTable(dt),得到3行数据:

pn tag 
p1 52 
RT 78 
RT 99

运行以下查询返回2条结果:

(dt.select("pn='rt'")).count '返回2

将该dt作为DataGridView(dgv)的数据源,把第二行的pn修改为p1,数据变为:

pn tag
p1 52
p1 78
RT 99

用MessageBox可正常显示修改后的数据:

messagebox.show(dt.rows(1)("pn")) '返回p1

但再次运行上述Select查询时,结果仍为2条;查询pn='p1'仍返回1条:

(dt.select("pn='rt'")).count '仍返回2
(dt.select("pn='p1'")).count '仍返回1

奇怪的是,按tag查询却能返回正确修改后的pn:

messagebox.show((dt.select("tag=78"))(0)("pn").tostring) '返回p1

DataTable.Select仿佛仅查询dt的原始数据而非当前修改后的数据,即使它能返回当前数据。

解决方案

编辑完字段后,若只是点击或按Tab键切换到同一行的其他字段,DataTable.Select无法获取更新后的数据。此时只需点击其他行,或在CellValueChanged事件开头添加让其他控件获取焦点的代码,比如:

other_DGV.Focus()

就能让DataTable.Select使用更新后的数据进行查询了。


内容的提问来源于stack exchange,提问作者Hsmith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:35:51