Cách tìm kiếm và hiển thị các mục giống nhau hoặc các mục trùng lặp trong listview VB.NET

lập trình


CHÀO,

Cần giúp đỡ, Tiếng Anh đầu tiên không tốt,
Tôi có chế độ xem danh sách hiển thị các mục từ tệp văn bản từ thư mục (thư mục) được chỉ định, tôi muốn hộp tìm kiếm và (TextBox1) và cmdButton (Button1) tìm kiếm và hiển thị tất cả các mục tôi tìm kiếm trong cột thứ ba hoặc Số ID.

BÁN TẠI:

Cột 1: Ngày và giờ:
Cột 2: Tên:
Cột 3: Số CMND:

08-08-2017 06:06:00, John Lucas, 1010000
08-08-2017 07:00:00, Tháng Tư, 1010023
08-08-2017 08:45:00, Kevin Elmo, 1010014
08-08-2017 09:06:00, John Lucas, 1010000
08-08-2017 10:24:00, Ed Olivia, 1010012
08-08-2017 11:47:00, John Lucas, 1010000
08-08-2017 12:56:00, Liza Ben, 1010001

Tôi muốn hiển thị dữ liệu (mục) của John Lucas bằng cách tìm kiếm Số ID và hiển thị nó trong listview (listview khác)

Những gì tôi đã thử:

‘Đây là mã chỉ hiển thị các mục của tôi từ tệp văn bản, tôi không biết gì cả và tôi đang nhờ bạn giúp đỡ, TIA.’

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load, MyBase.DockChanged
lvDETAILS.View = View.Details
        lvDETAILS.Columns.Add("Date/Time:", 220, HorizontalAlignment.Left)
        lvDETAILS.Columns.Add("Employee Name:", 280, HorizontalAlignment.Left)
        lvDETAILS.Columns.Add("ID Number:", 120, HorizontalAlignment.Left)
        lvDETAILS.Columns.Add("Department:", 250, HorizontalAlignment.Left)
        lvDETAILS.Columns.Add("User Type:", 200, HorizontalAlignment.Left)
        lvDETAILS.Columns.Add("ESD Check Result:", 200, HorizontalAlignment.Left)

        Dim File_Name As String = "D:\esdcheck\DET.dll"
        Dim objReader As New IO.StreamReader(File_Name)
        Dim newarray(6) As String
        Dim DateTime As String
        Dim Name As String
        Dim IDNum As String
        Dim Department As String
        Dim UserType As String
        Dim ESDResult As String

        Do While objReader.Peek <> -1
            newarray = objReader.ReadLine().Split(",")
            DateTime = newarray(0)
            Name = newarray(1)
            IDNum = newarray(2)
            Department = newarray(3)
            UserType = newarray(4)
            ESDResult = newarray(5)
            Dim x As Integer = lvDETAILS.Items.Add(New ListViewItem(New String() {DateTime})).Index 'Para sa Listview unang Column depende sa base sa index
            lvDETAILS.Items.Item(x).SubItems.Add(Name) 'yung 'x' po na yun ay number of index na nakaset per column., ilalagay sa second column depende sa index
            lvDETAILS.Items.Item(x).SubItems.Add(IDNum) 'sunod sunod lang po ang pag lagay depende sa dami ng column
            lvDETAILS.Items.Item(x).SubItems.Add(Department) 'yeah
            lvDETAILS.Items.Item(x).SubItems.Add(UserType) 'yeah
            lvDETAILS.Items.Item(x).SubItems.Add(ESDResult) 'yeah !!! eto na yung last!
End Sub

Giải pháp 1

Giải pháp tốt nhất của bạn là sử dụng điều khiển hỗ trợ liên kết và lọc dữ liệu. Mặc dù có thể và tốn quá nhiều công sức nhưng ListView không thực sự phù hợp cho mục đích này.

Tuy nhiên DataGridView được thiết kế cho nhiệm vụ mà bạn muốn đạt được. Bài viết CodeProject này chỉ cho bạn chính xác cách đạt được điều bạn muốn: Hướng dẫn liên kết dữ liệu chi tiết[^]

Giải pháp 2

Cảm ơn bạn đã trả lời

Tôi đang sử dụng Visual Studio 2017 VB.net – đó là C#

Giải pháp 3

VB.NET
Imports System.Collections.Generic

Public Class Form1
    ' Dictionary to store unique items
    Dim itemsDictionary As New Dictionary(Of String, ListViewItem)

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Initialize ListView columns
        ListView1.View = View.Details
        ListView1.Columns.Add("Date and Time", 200)
        ListView1.Columns.Add("Name", 150)
        ListView1.Columns.Add("ID Number", 100)

        ' Add sample data
        AddItem("08-08-2017 06:06:00", "John Lucas", "1010000")
        AddItem("08-08-2017 07:00:00", "April Dun", "1010023")
        AddItem("08-08-2017 08:45:00", "Kevin Elmo", "1010014")
        AddItem("08-08-2017 09:06:00", "John Lucas", "1010000")
        AddItem("08-08-2017 10:24:00", "Ed Olivia", "1010012")
        AddItem("08-08-2017 11:47:00", "John Lucas", "1010000")
        AddItem("08-08-2017 12:56:00", "Liza Ben", "1010001")
    End Sub

    Private Sub AddItem(dateTime As String, name As String, idNumber As String)
        ' Create ListViewItem
        Dim item As New ListViewItem({dateTime, name, idNumber})

        ' Check for duplicates
        Dim key As String = $"{dateTime}-{name}-{idNumber}"
        If Not itemsDictionary.ContainsKey(key) Then
            ' Add item to ListView and dictionary
            ListView1.Items.Add(item)
            itemsDictionary.Add(key, item)
        Else
            ' Handle duplicate (e.g., change color or other action)
            item.BackColor = Color.LightPink
        End If
    End Sub
End Class

コメント

タイトルとURLをコピーしました