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

如何使用BindingSource.Find在DataSet指定表中查找值并修改数据?

正确实现BindingSource查找与数据修改的方法

先帮你梳理下原代码里的几个问题:

  • Find方法的用法有误:你传入的DataSet.Tables("TableName").Rows("myIDNum")是用列名索引行,这会报错,应该传入具体的ID数值;而且没必要在遍历里重复调用Find,完全是性能浪费。
  • FACID("ColumnName")这个变量没定义,应该从目标行里获取对应列的值。
  • DirectCast(myBindingSource(row), DataRowView)的转换逻辑多余,循环里的row本身就是DataRowView类型。

下面给你两种场景下的正确实现方案:

场景一:查找单个匹配行(精准定位)

如果你只需要找某一个特定ID的记录,直接用BindingSource.Find定位行索引即可,不用遍历整个数据源:

' 先从DataSet的目标表中拿到要查找的ID值(这里假设取表中第一行的myIDNum,你可以根据实际需求调整)
Dim targetID As Integer = CInt(DataSet.Tables("TableName").Rows(0)("myIDNum"))

' 在BindingSource中查找该ID对应的行索引
Dim foundIndex As Integer = myBindingSource.Find("myIDNum", targetID)

If foundIndex >= 0 Then
    ' 获取找到的目标行
    Dim foundRow As DataRowView = DirectCast(myBindingSource(foundIndex), DataRowView)
    
    ' 判断列值是否符合条件
    If foundRow("ColumnName").ToString() = "Something" Then
        ' 修改目标列的数值
        foundRow("Column") = "Something else"
    End If
Else
    ' 未找到匹配行的处理逻辑
    MessageBox.Show("未找到对应ID的记录")
End If

场景二:批量匹配并修改多行

如果需要匹配DataSet目标表中的多个ID,再批量修改符合条件的行,就用遍历的方式:

' 先把DataSet目标表中所有需要匹配的ID收集到列表里
Dim targetIDs As New List(Of Integer)()
For Each tableRow As DataRow In DataSet.Tables("TableName").Rows
    targetIDs.Add(CInt(tableRow("myIDNum")))
Next

' 遍历BindingSource的每一行,匹配条件并修改
For Each row As DataRowView In myBindingSource
    Dim currentID As Integer = CInt(row("myIDNum"))
    
    ' 判断当前行ID是否在目标集合中
    If targetIDs.Contains(currentID) Then
        ' 检查列值条件
        If row("ColumnName").ToString() = "Something" Then
            row("Column") = "Something else"
        End If
    End If
Next

' 如果绑定了DataGridView这类控件,修改后刷新UI
myBindingSource.ResetBindings(False)

几个关键注意事项

  • Find方法的前提:BindingSource.Find要求绑定的数据源支持索引查找,建议给DataTable设置主键:
    DataSet.Tables("TableName").PrimaryKey = {DataSet.Tables("TableName").Columns("myIDNum")}
    
  • UI刷新:如果修改数据后界面没更新,调用myBindingSource.ResetBindings(False)即可,False表示只刷新数据,不重新绑定架构。
  • 类型安全:尽量用CInt、TryCast这类安全的类型转换方式,避免出现类型转换异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:08:47