vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
suche in Listview 
Autor: Marty**
Datum: 05.03.17 08:10

Hallo,



ich suche eine Möglichkeit, das die Werte von Listview1 (Wert2 und 3) aus Listview2 (Wert4 und 5) verglichen werden. Wenn eine Übereinstimmung da ist, sollen die Werte aus Listview2 (Wert6 und 7) im Label 3 und 4 ausgegeben werden.

Mein jetziger Code:

Public Class Form1
    Dim col1(), Col2() As String
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Width = 615
        Me.Height = 360
        Dim la1 As New Label With {.Parent = Me, .Text = "ListView1", .Top = _
          30, .Left = 8}
        Dim la2 As New Label With {.Parent = Me, .Text = "ListView2", .Top = _
        30, .Left = 268}
        Dim la3 As New Label With {.Parent = Me, .Text = "Wert6 aus LV2 ?", _
        .Top = 265, .Left = 8}
        Dim la4 As New Label With {.Parent = Me, .Text = "Wert7 aus LV2 ?", _
        .Top = 288, .Left = 8}
        Dim lv1 As New ListView With {.Parent = Me, .Width = 250, .Height = _
        200, .Top = 55, .Left = 10, .GridLines = True, .View = View.Details, _
        .FullRowSelect = True}
        Dim lv2 As New ListView With {.Parent = Me, .Width = 310, .Height = _
        200, .Top = 55, .Left = 270, .GridLines = True, .View = View.Details, _
        .FullRowSelect = True}
        col1 = {"Nr:", "Wert2", "Wert3", "Wert4"}
        Col2 = {"Wert3", "Wert4", "Wert5", "Wert6", "Wert7"}
 
        For i As Integer = 0 To col1.Length - 1
            lv1.Columns.Add(col1(i))
        Next i
        For i As Integer = 0 To Col2.Length - 1
            lv2.Columns.Add(Col2(i))
        Next i
        lv1.Items.Add("test")
        lv1.Items(0).SubItems.Add("1")
        lv1.Items(0).SubItems.Add("2")
        lv1.Items(0).SubItems.Add("3")
        lv1.Items.Add("test")
        lv1.Items(1).SubItems.Add("1")
        lv1.Items(1).SubItems.Add("5")
        lv1.Items(1).SubItems.Add("6")
 
        lv2.Items.Add("test2")
        lv2.Items(0).SubItems.Add("1")
        lv2.Items(0).SubItems.Add("2")
        lv2.Items(0).SubItems.Add("200")
        lv2.Items(0).SubItems.Add("300")
 
        lv2.Items.Add("test2")
        lv2.Items(1).SubItems.Add("1")
        lv2.Items(1).SubItems.Add("5")
        lv2.Items(1).SubItems.Add("250")
        lv2.Items(1).SubItems.Add("350")
 
        lv2.Items.Add("test2")
        lv2.Items(2).SubItems.Add("1")
        lv2.Items(2).SubItems.Add("5")
        lv2.Items(2).SubItems.Add("300")
        lv2.Items(2).SubItems.Add("400")
    End Sub
End Class
MfG Marty **
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: suche in Listview 
Autor: Marty**
Datum: 05.03.17 08:49

ich glaube ich habe mich falsch ausgedrückt. Die Werte aus Listview1 (Wert2 und 3) Sollen in Listview2 gesucht werden. Die gefunden Werte sollen dann im Label ausgegeben werden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: suche in Listview 
Autor: Manfred X
Datum: 05.03.17 11:07

Hallo!

Deine Daten gehören in eine Klasse, die als Datenquelle fungierten kann,
z.B. generische List(of ...) oder Datatable.
Durch einen Linq-Befehl läßt sich z.B. die Schnittmenge der Daten bestimmen.
Die Ergebnis-Auflistung kann an eine Listbox oder ein Grid gebunden werden.

Beitrag wurde zuletzt am 05.03.17 um 11:11:03 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: suche in Listview 
Autor: effeff
Datum: 05.03.17 12:00

auf einer Form existieren drei DataGridView; Eines für die Menge an Daten, welche im zweiten gesucht werden soll und das dritte, um das Ergebnis darzustellen:

Public Class Form1
 
    Dim dt1 As New DataTable
    Dim dt2 As New DataTable
    Dim dt3 As DataTable
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        dt1.Columns.Add("ID")
        dt1.Columns.Add("Wert")
        dt1.PrimaryKey = New DataColumn() {dt1.Columns("ID")}
        Dim columnsdt1(1) As DataColumn
        columnsdt1(0) = dt1.Columns("ID")
        dt1.PrimaryKey = columnsdt1
        dt1.Namespace = "DT1"
 
        dt1.Rows.Add(1, 10)
        dt1.Rows.Add(2, 20)
        dt1.Rows.Add(3, 30)
        dt1.Rows.Add(4, 40)
        dt1.Rows.Add(5, 50)
        dt1.Rows.Add(6, 60)
        dt1.Rows.Add(7, 70)
        dt1.Rows.Add(8, 80)
        dt1.Rows.Add(9, 90)
        dt1.Rows.Add(10, 100)
 
        dt2.Columns.Add("ID")
        dt2.Columns.Add("Wert")
        dt2.PrimaryKey = New DataColumn() {dt2.Columns("ID")}
        Dim columnsdt2(1) As DataColumn
        columnsdt2(0) = dt2.Columns("ID")
        dt2.PrimaryKey = columnsdt2
        dt2.Namespace = "DT2"
 
        dt2.Rows.Add(1, 10)
        dt2.Rows.Add(2, 25)
        dt2.Rows.Add(3, 30)
        dt2.Rows.Add(4, 43)
        dt2.Rows.Add(5, 58)
        dt2.Rows.Add(6, 60)
        dt2.Rows.Add(7, 77)
        dt2.Rows.Add(8, 80)
        dt2.Rows.Add(9, 91)
        dt2.Rows.Add(10, 100)
 
        dgv1.DataSource = dt1
        dgv2.DataSource = dt2
 
        dt3 = dt2.Copy
        Dim dv As New DataView(dt3)
 
        Dim filter As String = ""
 
        For Each r As DataRow In dt1.Rows
            filter = filter & "'" & r(1).ToString & "'"
        Next
 
        filter = filter.Replace("''", "', '")
 
        dv.RowFilter = "Wert IN (" & filter & ")"
 
        dgv3.DataSource = dv
 
    End Sub
End Class

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Datatables: Linq-Beispiel (Intersect) 
Autor: Manfred X
Datum: 06.03.17 00:08

Ich nehme Bezug auf das Datenbeispiel von effeff.
Dort muß bei der Definition der Datatablespalten jeweils noch
durch den Parameter Gettype(Integer) der Datentyp festgelegt werden.
Option Infer On muß gegeben sein.

Dim Common = _
  ((From r1 As DataRow In dt1.AsEnumerable _
    Select v1 = r1.Field(Of Integer)(0), _
           v2 = r1.Field(Of Integer)(1)).Intersect _
      (From r2 As DataRow In dt2.AsEnumerable _
       Select v1 = r2.Field(Of Integer)(0), _
              v2 = r2.Field(Of Integer)(1))).tolist
"Common" ist eine generische Liste, deren Elemente anonyme Typen sind, deren
Elemente über die Member v1, v2 abgerufen werden können: Common(0).v1
Diese Liste enthält alle Wertepaare, die in beiden Datatables vorkommen (Intersect).

Beitrag wurde zuletzt am 06.03.17 um 00:22:44 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel