如何将搜索功能添加到ListView?

时间:2020-06-21 08:05:54

标签: sql-server vb.net winforms listview textbox

我在窗体上有一个TextBox和一个ListView。 ListView已连接到MS SQL数据库。
我想在TextBox中写文本,并在ListView的其中一列中搜索此文本。

我将此代码添加到了TextBox的TextChanged事件处理程序中。
这段代码有什么问题?

Private Sub WyszukajUmowyNajmow()
    Dim conn As SqlConnection = New SqlConnection()
    Dim cmd As SqlCommand = New SqlCommand()
    Dim da As SqlDataAdapter = New SqlDataAdapter()
    Dim dt As DataTable = New DataTable()

    Try
        sql = "SELECT UN.NUMER_UMOWY, UN.DATA_UMOWY, RO.RODZAJ_NAJMU, CZ.WYSOKOSC_CZYNSZU_NETTO, CZ.CZYNSZ_WYRAZONY, CZ.ZAPLATA_CZYNSZU, 
              CZ.TERMIN_ZAPLATY, UN.DATA_OD, UN.DATA_DO, UN.WYSOKOSC_KAUCJI_NETTO, CHP.NR_FABRYCZNY, CHP.NR_REJESTRACYJNY 
              FROM N_UMOWY_NAJMOW AS UN
              INNER JOIN N_CZYNSZ AS CZ
              ON UN.ID_CZYNSZU = CZ.ID_CZYNSZU
              INNER JOIN N_CHARAKTERYSTYKA_POZ_POJAZDU AS CHP
              ON UN.ID_CHARAKTERYSTYKI_POJAZDU = CHP.ID_CHARAKTERYSTYKI_POJAZDU
              INNER JOIN N_RODZAJ_NAJMU AS RO
              ON UN.ID_RODZAJU_NAJMU = RO.ID_RODZAJU_NAJMU
              WHERE CHP.NR_FABRYCZNY LIKE ' % " & TextBox.Text & " % ' "

        connection()
        command = New SqlCommand(sql, con)
        DataReader = command.ExecuteReader()
        listaUmowNajmow.Items.Clear()

        Dim x As ListViewItem

        Do While DataReader.Read = True
            x = New ListViewItem(DataReader("NUMER_UMOWY").ToString)
            x.SubItems.Add(DataReader("DATA_UMOWY"))
            x.SubItems.Add(DataReader("RODZAJ_NAJMU").ToString)
            x.SubItems.Add(DataReader("WYSOKOSC_CZYNSZU_NETTO").ToString)
            x.SubItems.Add(DataReader("CZYNSZ_WYRAZONY").ToString)
            x.SubItems.Add(DataReader("ZAPLATA_CZYNSZU").ToString)
            x.SubItems.Add(DataReader("DATA_OD"))
            x.SubItems.Add(DataReader("DATA_DO"))
            x.SubItems.Add(DataReader("TERMIN_ZAPLATY").ToString)
            x.SubItems.Add(DataReader("NR_REJESTRACYJNY").ToString)
            x.SubItems.Add(DataReader("NR_FABRYCZNY").ToString)
            x.SubItems.Add(DataReader("WYSOKOSC_KAUCJI_NETTO").ToString)
            listaUmowNajmow.Items.Add(x)
        Loop
    Catch ex As Exception
        MsgBox(ex.Message)
    Finally
        command.Dispose()
        con.Close()
    End Try
End Sub

1 个答案:

答案 0 :(得分:0)

编译此代码时我没有任何错误,但是当应用程序运行时,我想在TextBox中写(事件TextBox_TextChanged),然后在ListView上我看不到任何项目,但应该在那儿。当表单加载时,我从MS SQL数据库中看到ListView项。有人知道这段代码有什么问题吗?