如何使文本框更改事件筛选器 GridView 指向 SQL Server



我有以下适用于MS Access的代码。

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged, TextBox1.Click
    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersExcelDesktopNorthwind_2012.mdb"
    Dim selectCommand As String
    Dim connection As New OleDbConnection(connectionString)

    selectCommand = "Select * From MyExcelTable where Fname Like '%" & TextBox1.Text & "%'"
    Me.dataAdapter = New OleDbDataAdapter(selectCommand, connection)
    With DataGridView1
        .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
        .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader
        .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader
    End With
    Dim commandBuilder As New OleDbCommandBuilder(Me.dataAdapter)
    Dim table As New DataTable()
    table.Locale = System.Globalization.CultureInfo.InvariantCulture
    Me.dataAdapter.Fill(table)
    Me.bindingSource1.DataSource = table
    Dim data As New DataSet()
    data.Locale = System.Globalization.CultureInfo.InvariantCulture
    DataGridView1.DataSource = Me.bindingSource1
    Me.DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Aqua
    Me.DataGridView1.AutoResizeColumns( _
        DataGridViewAutoSizeColumnsMode.AllCells)
End Sub

我想做同样的事情,但指向 SQL Server 查询,而不是 Access 查询。 有谁知道该怎么做? 如果是这样,请分享。

通过一些轻微的测试,下面的脚本似乎可以按预期工作。

Imports System.Data.SqlClient
Public Class Form1
    Dim ds As New DataSet
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim con As SqlConnection = New SqlConnection("Data Source=EXCEL-PCSQLEXPRESS; Integrated Security=true; Initial Catalog=NORTHWND")
        con.Open()
        Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM Categories", con)
        da.Fill(ds, "Cat")
        DataGridView1.DataSource = ds.Tables("Cat")
    End Sub
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        ds.Tables("Cat").DefaultView.RowFilter = "[CategoryName] LIKE '*" & TextBox1.Text & "*'"
    End Sub
End Class

明天我会研究那个计时器选项。 这太聪明了! 感谢您的提示!!

最新更新