繁体   English   中英

VB.net DataGridview筛选2013

[英]VB.net DataGridview Filtering 2013

我创建了一个显示所有数据的Datagridview 现在,我希望能够过滤我的数据。 我正在使用DataSetBindingSourceTableAdapter 我尝试了几件事,但似乎无济于事。 目前,我有一个TextBox在编写时应进行过滤。 当我执行并在框中键入内容时,它不会过滤或出现错误。 下面是我的代码。 我想念什么吗?

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

    DataGridView1.AllowUserToAddRows = True
    DataGridView1.AllowUserToDeleteRows = True

    Dim cn As SqlConnection = New SqlConnection("")
    adap = New SqlDataAdapter("SELECT res_snbr, First_Name, Last_Name, Item FROM Inventory_Details", cn)

    Dim builder As New SqlCommandBuilder(adap)
    adap.InsertCommand = builder.GetInsertCommand()
    'adap.UpdateCommand = builder.GetUpdateCommand()
    'adap.DeleteCommand = builder.GetDeleteCommand()

    dt = New DataTable()
    adap.Fill(dt)

    DataGridView1.DataSource = dt

End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    If TextBox1.TextLength > 0 Then
        InventoryDetailsBindingSource.Filter = _
                String.Format("res_snbr Like '%" & TextBox1.Text) & "%'"
    Else
        InventoryDetailsBindingSource.Filter = String.Empty
    End If
End Sub

如果您的数据源是数据表,则可以尝试此操作。

TryCast(InventoryDetailsBindingSource, DataTable).DefaultView.RowFilter = String.Format("Field = '{0}'", textBoxFilter.Text)

您可以在数据表上使用行过滤器属性,如下所示。 http://www.csharp-examples.net/dataview-rowfilter/

Imports System.Data.SqlClient
Public Class Form1
Dim cn As New SqlConnection("Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=")
Dim adap As New SqlDataAdapter("SELECT res_snbr, First_Name, Last_Name, Item FROM Inventory_Details", cn)
Dim builder As New SqlCommandBuilder(adap)
Dim dt As New DataTable
Dim InventoryDetailsBindingSource As New BindingSource
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    adap.InsertCommand = builder.GetInsertCommand()
    adap.Fill(dt)
    InventoryDetailsBindingSource.DataSource = dt
    DataGridView1.DataSource = InventoryDetailsBindingSource
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    If TextBox1.TextLength > 0 Then
        InventoryDetailsBindingSource.Filter = String.Format("res_snbr Like '%{0}%'", TextBox1.Text)
    Else
        InventoryDetailsBindingSource.Filter = String.Empty
    End If
End Sub
End Class

有许多方法可以完成您希望在此处完成的工作,上面的代码就是我将要做的事情。 除其他差异外,请注意BindingSource用作DataGridViewDataSource ,并且在设置BindingSourceFilter属性时正确使用String.Format

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM