【问题标题】:VB.Net 2015 Textbox to search DataGridVB.Net 2015 文本框搜索 DataGrid
【发布时间】:2016-10-10 01:59:28
【问题描述】:

我想知道是否有一种简单的方法可以使用文本框来搜索数据网格。我已经阅读了一些内容,但我发现的所有示例都来自旧版本的 VS。似乎旧版本的 VS 使用大量代码来连接数据源,因此它使用大量代码进行搜索。我想我可以简化一下吗?

Private Sub Baseball_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Me.PlayersTableAdapter.Fill(Me.BaseballDataSet.Players)

End Sub

这会用数据加载网格。该表包含棒球运动员的姓名和击球率。我希望能够使用一个文本框和一个按钮按名称搜索,另一个按击球率搜索。

【问题讨论】:

  • 您可以从DataSource 创建一个视图,然后对视图应用过滤器,然后将视图应用回DataSource,这是一种方式 i> 过滤...除了回答您的问题之外,还有一些简单的方法可以搜索 DataGridView`。在我们帮助解决具体问题时,请先向我们展示您的尝试。
  • 无需更改DataSource。您正在使用键入的DataSet,因此希望您已经通过BindingSource 进行绑定。您可以简单地设置BindingSourceFilter 属性来过滤数据。您还可以在BindingSource 上调用Find 以获取匹配行的索引并将其分配给Position 属性以选择它。

标签: vb.net search datagrid


【解决方案1】:

这是来自我的示例代码。我有一个Textbox 和一个Button

 Private Sub srchBtn_Click(sender As Object, e As EventArgs) Handles srchBtn.Click
    On Error GoTo wewe

    If txtSearch.Text = "" Then
        Call notFound()
        Exit Sub

    Else

        Dim cantFind As String = txtSearch.Text

        SampleBindingSource.Filter = "(Convert(Number_of_Employees, 'System.String') LIKE '" & txtSearch.Text & "') OR (ewan LIKE '" & txtSearch.Text & "') OR (ko LIKE '" & txtSearch.Text & "') OR (sayo LIKE '" & txtSearch.Text & "') OR (hehehe LIKE '" & txtSearch.Text & "')"

        If SampleBindingSource.Count <> 0 Then
            With DataGridView1
                .DataSource = SampleBindingSource
            End With
        Else

            MsgBox(cantFind & vbNewLine & "The search item was not found!", MsgBoxStyle.Information, "Hey boss")

            SampleBindingSource.Filter = Nothing

            With DataGridView1
                .ClearSelection()
                .DataSource = SampleBindingSource
            End With


        End If
    End If


hey:
    Exit Sub

wewe:

    MsgBox("Error Number " & Err.Number & vbNewLine & "Error Description " & Err.Description, MsgBoxStyle.Critical, "Reset Error!")
    Resume hey

End Sub

Private Sub reset()
    Dim txtS As TextBox = txtSearch

    With txtS
        .Text = ""
        .Select()

    End With

    If DataGridView1.DataSource Is Nothing Then
        Exit Sub
    End If

End Sub

Private Sub notFound()
    Dim txtS As TextBox = txtSearch

    With txtSearch
        .Text = ""
        .Select()
        .SelectAll()

    End With

    If DataGridView1.DataSource Is Nothing Then
        Exit Sub
    End If
End Sub

这将通过单击按钮查找特定单词。注意:将该代码放入您的Button。它只会找到拼写正确的单词或整个单词。

示例:您要查找单词 Anthony。输入整个单词然后点击搜索按钮。

如果你想在不点击任何按钮的情况下搜索一个项目,你可以试试这个:

  Private Sub TextBox5_TextChanged(sender As Object, e As EventArgs) Handles TextBox5.TextChanged
    Try

        Using conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Yourdatabase.mdb;")
            conn.Open()
            Dim command As New OleDbCommand("SELECT * FROM yourtable WHERE (ID like @ID) OR (Sample like @Sample) OR (Sample like @Sample) OR (Sample like @Sample) OR (Sample like @Sample)", conn)
            With command.Parameters
                .AddWithValue("@Sample", TextBox5.Text)
                .AddWithValue("@Sample", TextBox5.Text)
                .AddWithValue("@Sample", TextBox5.Text)
                .AddWithValue("@Sample", TextBox5.Text)
                .AddWithValue("@Sample", TextBox5.Text)
            End With
            Dim adapter As New OleDbDataAdapter
            Dim dt As New DataTable
            adapter.SelectCommand = command
            adapter.Fill(dt)
            DataGridView.DataSource = dt
            adapter.Dispose()
            command.Dispose()
            conn.Close()
        End Using
    Catch ex As Exception
        MessageBox.Show(ex.Message, "ERROR4", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

将该代码放在Textbox 中的TextChanged 事件中。注意:我使用了连接字符串。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-23
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多