Member 13219060 Ответов: 2

Как искать и отображать одни и те же элементы или дубликаты элементов в listview VB.NET


Привет,

Нужна помощь, сначала не очень хорошо по-английски,
У меня есть listview, отображающий элементы из текстового файла из назначенного каталога (папки), я хочу, чтобы поле поиска и (TextBox1) и cmdButton (Button1) искали и отображали все элементы, которые я ищу в третьем столбце или идентификационном номере.

ЭКС:

Колонка 1: Дата и время:
Колонка 2: Наименование:
Колонка 3: идентификационный номер:

08-08-2017 06: 06: 00, Джон Лукас, 1010000
08-08-2017 07: 00: 00, Апрель Dun, 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

Я хочу отобразить данные (элементы) Джона Лукаса путем поиска идентификационного номера и отображения его в listview (другой listview)

Что я уже пробовал:

-Это код для отображения моих предметов только из текстового файла, я понятия не имею, и я прошу у тебя помощи, ТИА.

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

Ralf Meier

Я бы предложил это :
Если у вас есть ввод в текстовом поле : очистите свой 2-й ListView, повторите свой 1-й ListView и посмотрите, не найдете ли вы в Подэлементе Name совпадение. Если да, то перенесите соответствующие данные во 2-й ListView.

2 Ответов

Рейтинг:
20

Graeme_Grant

Ваше лучшее решение - использовать элемент управления, поддерживающий привязку данных и фильтрацию. Хотя это возможно и чрезмерно вовлечено, ListView на самом деле не подходит для этой цели.

Однако DataGridView предназначен для выполнения задачи, которую вы хотите выполнить. Эта статья CodeProject показывает вам, как именно достичь того, чего вы хотите: Подробное Руководство По Привязке Данных[^]


Рейтинг:
2

Member 13219060

Спасибо за ответ

Im с помощью Visual Studio 2017 VB.net - это с#


Richard Deeming

Если вы хотите ответить на решение, используйте команду "есть вопрос или комментарий?" кнопка под этим решением.

НЕ опубликуйте свой комментарий как новое "решение"!