搜索DataGridView并选择匹配

时间:2014-02-01 15:09:43

标签: vb.net vba

如何在DataGridView的第一列中搜索Value并选择值为Value的行? - 很像SQL中的WHERE子句。

我一直在寻找线程中的答案,但我似乎无法找到答案。

DataGridView1是DataGridView,My.Settings.CurrentUserID是我想要搜索的值。

任何帮助将不胜感激。

请注意;表中只能出现一次Value,因此不需要多次返回/匹配。

{编辑1}

史蒂夫解决方案似乎只突出显示行,而不是实际选择它,因为黑色箭头不会移动到它上面。代码寻找的值是4,注意它是如何找到它并突出显示它,但箭头不会移动。

代码执行此操作:

enter image description here

我需要它来执行此操作:

enter image description here

2 个答案:

答案 0 :(得分:0)

假设您要搜索的列是第一个

For Each row in DataGridView1.Rows
    If Convert.ToInt32(row.Cells(0).Value) = My.Settings.CurrentUserID Then
        row.Selected = True
        Exit For
    End If
Next

编辑:

要指示“当前”行,请设置datagridview的CurrentCell属性。

   .....
   DataGridView1.CurrentCell = row.Cells(0)
   Exit For

来自MSDN:

  

当您将单元格设置为当前单元格时,它将滚动到视图中   目前尚未显示。当前单元格不能是标题   单元格,已禁用的单元格或隐藏的行或列中的单元格。

答案 1 :(得分:0)

将此放入点击事件或其他任何内容......

    Dim intIndex As Integer = FindUser(txtSearchString.Text, txtColumn.Text)
    dgvMembers.CurrentCell = dgvMembers.Rows(intIndex).Cells(0) 'This ensures that the    arrow will move

把它放在你的班级或任何地方......

  Private Function FindUser(ByVal strUserID As String, ByVal intColumn As Integer) As Integer
    Dim intIndex As Integer = 0

    For i As Integer = 0 To dgvMembers.Rows.Count - 1
        If dgvMembers.Rows(i).Cells(intColumn).Value.ToString = strUserID Then
            intIndex = i
            Exit For
        End If
    Next

    Return intIndex
End Function