كيفية البحث وعرض نفس العناصر أو العناصر المكررة في listview VB.NET

برمجة


أهلاً،

بحاجة إلى مساعدة، أولا ليس جيدا في اللغة الإنجليزية،
لدي عرض قائمة يعرض عناصر من ملف نصي من الدليل (المجلد) المعين، وأريد مربع البحث و(TextBox1) وcmdButton (Button1) للبحث وعرض جميع العناصر التي أبحث عنها في العمود الثالث أو رقم المعرف.

السابق:

العمود 1: التاريخ والوقت:
العمود 2: الاسم:
العمود 3: رقم الهوية:

08-08-2017 06:06:00, جون لوكاس, 1010000
08-08-2017 07:00:00، أبريل دون، 1010023
08-08-2017 08:45:00, كيفن إلمو, 1010014
08-08-2017 09:06:00, جون لوكاس, 1010000
08-08-2017 10:24:00، إد أوليفيا، 1010012
08-08-2017 11:47:00، جون لوكاس، 1010000
08-08-2017 12:56:00, ليزا بن, 1010001

أريد عرض بيانات (عناصر) جون لوكاس من خلال البحث عن رقم المعرف وعرضها في عرض القائمة (عرض قائمة آخر)

ما حاولت:

“هذا هو الرمز لعرض العناصر الخاصة بي من ملف نصي فقط، ليس لدي أي فكرة وأطلب منك بعض المساعدة، 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

الحل 1

أفضل حل لك هو استخدام عنصر تحكم يدعم ربط البيانات وتصفيتها. على الرغم من أن الأمر ممكن ومبالغ فيه، إلا أن ListView ليس مناسبًا حقًا لهذا الغرض.

ومع ذلك، تم تصميم DataGridView للمهمة التي تريد تحقيقها. توضح لك مقالة CodeProject هذه كيفية تحقيق ما تريد بالضبط: برنامج تعليمي تفصيلي لربط البيانات[^]

الحل 2

شكرا لكم على الرد

أنا أستخدم Visual Studio 2017 VB.net – إنه C#

الحل 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をコピーしました