簡體   English   中英

使用文本框VB.net在Datagridview中搜索

[英]Searching in Datagridview using textbox VB.net

美好的一天,我是vb.net編程的初學者,並且在使用文本框搜索或過濾datagridview時遇到問題。 我有一個用於搜索的文本框和一個用於檢索值的兩個按鈕,即學生和車輛。 當學生按鈕單擊時,顯示的學生數據與車輛數據相同,但是當我將“ Dim dtaset As New DataTable”移動到學生,車輛和searchtxt事件之外時,搜索成功過濾了datavalues數據,這也存在問題同樣,在移動之后,單擊按鈕會在datagridview中添加該按鈕的數據,但是在第一個按鈕之后單擊另一個按鈕時,數據不會替換前一個按鈕,它將僅添加將擴展datagrid列的列。 這是我的代碼,謝謝

Private Sub searchtxt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles searchtxt.TextChanged
    con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"


    Dim dtaset As New DataTable

    Dim DV As New DataView(dtaset)
    DV.RowFilter = String.Format("FirstName Like '%{0}%'", searchtxt.Text)
    DataGridView1.DataSource = DV
End Sub

Public Sub studattenprint()
    con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"

    Dim adpter As New MySqlDataAdapter
    Dim dtaset As New DataTable
    Dim bsource As New BindingSource


    Try
        con.Open()
        Dim query As String
        query = "select idno as 'Student_ID',lastxt as 'LastName',firstxt as 'FirstName',middletxt as 'MiddleName',log as 'Status',timein as 'Timein',crse as 'Course',dates as 'Date' from dat.studdailyhistory"
        cmd = New MySqlCommand(query, con)

        adpter.SelectCommand = cmd
        adpter.Fill(dtaset)
        If dtaset.Rows.Count >= 0 Then
            numlog.Text = dtaset.Rows.Count.ToString()
        End If
        bsource.DataSource = dtaset
        DataGridView1.DataSource = bsource

        ''DataGridView Design
        DataGridView1.AllowUserToAddRows = False ' Disabled or hide (*) Symbol...

        DataGridView1.RowHeadersVisible = False 'To hide Left indicator..
        DataGridView1.DefaultCellStyle.SelectionBackColor = Color.SteelBlue  'Selection backcolor....
        DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow 'Alternating Backcolor.
        DataGridView1.AllowUserToResizeRows = False 'Disabled  row resize...
        DataGridView1.ReadOnly = True
        DataGridView1.MultiSelect = False
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
        DataGridView1.ShowRowErrors = False
        DataGridView1.ShowCellErrors = False
        DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells
        DataGridView1.Sort(DataGridView1.Columns(7), System.ComponentModel.ListSortDirection.Descending)

        adpter.Update(dtaset)
        con.Close()

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        con.Dispose()
    End Try
End Sub

Public Sub vehicattenprint()
    con = New MySqlConnection
    con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"
    Dim SDA As New MySqlDataAdapter
    Dim dtaset As New DataTable
    Dim bSource As New BindingSource


    Try

        con.Open()
        Dim query As String

        query = "select tag_no as 'Tag_No.',platenum as 'Plate no.',ownername as 'Owner_name',log as 'Status',timelog as 'Time_log',dates as 'Date' from dat.vehicdailyhistory"
        cmd = New MySqlCommand(query, con)
        SDA.SelectCommand = cmd
        SDA.Fill(dtaset)
        bSource.DataSource = dtaset
        DataGridView1.DataSource = bSource

        If dtaset.Rows.Count > 0 Then
            numlog.Text = dtaset.Rows.Count.ToString()
        End If

        SDA.Update(dtaset)
        DataGridView1.AllowUserToAddRows = False ' Disabled or hide (*) Symbol...

        DataGridView1.RowHeadersVisible = False 'To hide Left indicator..
        DataGridView1.DefaultCellStyle.SelectionBackColor = Color.SteelBlue  'Selection backcolor....
        DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow 'Alternating Backcolor.
        DataGridView1.AllowUserToResizeRows = False 'Disabled  row resize...
        DataGridView1.ReadOnly = True
        DataGridView1.MultiSelect = False
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
        DataGridView1.ShowRowErrors = False
        DataGridView1.ShowCellErrors = False
        DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells
        DataGridView1.Sort(DataGridView1.Columns(5), System.ComponentModel.ListSortDirection.Descending)

        con.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        con.Dispose()
    End Try
End Sub

Private Sub vehicatten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles vehicatten.Click
    vehicattenprint()
End Sub

Private Sub studatten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles studatten.Click
    studattenprint()
End Sub

將數據集綁定到數據網格后,您可以嘗試以下代碼片段:

Dim dv As DataView

dv = New DataView(yourDataset.Tables(0), "YourDataColumnName= '" & Me.txtSearchBox.Text & "' ", "YourDataColumnName", DataViewRowState.CurrentRows)
Me.YourDataGridView.DataSource = dv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM