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
相关产品推荐
相关产品推荐

