vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 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 - Fortgeschrittene
Re: TreeView befüllen in VB2010 
Autor: Manfred X
Datum: 04.03.18 08:33

Was genau Du erreichen möchtest, kann ich nicht erkennen.

Hier ein Beispiel mit drei verknüpften Tabellen,
wobei die Spalten der ersten beiden Tabellen in eine
Knotenhierarchie (Treeview) eingetragen werden und das Array
der jeweils zugehörigen Childrows der dritten Tabelle in die
TAG-Eigenschaft des Knotens der Spalte der zweiten Tabelle
eingetragen wird.

Beim Click auf einen Knoten der zweiten Hierarchie-Ebene
wird das Datagridview mit den, per Datarelation ermittelten,
Spalten der dritten Tabelle gefüllt (falls Sätze vorhanden sind).

Public Class FrmDataRelations2Controls
 
    Dim ds As New DataSet
    Dim WithEvents trv As New TreeView With
            {.Parent = Me, .Width = 300}
 
    Dim dgv As New DataGridView With
            {.Parent = Me, .Left = 310, .AllowUserToAddRows = False}
 
    Dim dtx As New DataTable 'für Grid-Anzeige der letzten Tabelle
 
 
    Private Sub CreateTableData(ByVal dt As DataTable,
                                Optional ByVal n As Integer = 100)
 
        dt.Columns.Add("ID", GetType(Integer))
        dt.Columns.Add("Value", GetType(String))
        dt.Columns.Add("Key", GetType(Integer))
        dt.PrimaryKey = {dt.Columns(0)}
 
        Dim rndm As New Random(123)
        For i As Integer = 0 To n - 1
            Dim row As DataRow = dt.NewRow
            row(0) = i
            row(2) = rndm.Next(0, n) 'Fremdschlüssel
            row(1) = dt.TableName & "_Value_" & _
               i.ToString & "/" & row(2).ToString
            dt.Rows.Add(row)
        Next i
    End Sub
 
 
    Private Sub FrmDataRelations2Controls_Load(sender As Object,
                                         e As EventArgs) Handles MyBase.Load
 
        Me.Size = New Size(620, 300)
        Me.FormBorderStyle = FormBorderStyle.Fixed3D
 
        'Im Dataset: 3 Tabellen mit Daten erzeugen
        For i As Integer = 1 To 3
            ds.Tables.Add(New DataTable With {.TableName = "DT" & i.ToString})
            CreateTableData(ds.Tables(i - 1))
        Next i
 
        'Tabellen verknüpfen / Datarelations erstellen
        For i As Integer = 0 To ds.Tables.Count - 2
            Dim dr As New DataRelation _
                    (ds.Tables(i).TableName & ds.Tables(i + 1).TableName,
                     ds.Tables(i).Columns(0), ds.Tables(i + 1).Columns(2))
            ds.Relations.Add(dr)
        Next i
 
        'Treeview-Knoten gemäß Datarelations erstellen
        Dim nd_i, nd_k As TreeNode
        Dim row_i, row_k As DataRow  'aktuelle Datarow in Schleife
        Dim rel_i, rel_k As String   'Name der Datarelation
        Dim col_i, col_k As Integer  'Index der anzuzeigenden Spalte im Treeview
        Dim val_i, val_k As String   'anzuzeigender Daten-Wert im Treeview
 
        dtx = ds.Tables(2).Clone
        dgv.DataSource = dtx
 
        For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
            row_i = ds.Tables(0).Rows(i)
            col_i = 1
            val_i = row_i(col_i).ToString
            nd_i = GetNode(trv.Nodes, val_i)
            rel_i = ds.Relations(0).RelationName
 
            For k As Integer = 0 To row_i.GetChildRows(rel_i).Length - 1
                row_k = row_i.GetChildRows(rel_i)(k)
                col_k = 1
                val_k = row_k(col_k).ToString
                nd_k = GetNode(nd_i.Nodes, val_k)
                rel_k = ds.Relations(1).RelationName
 
                'Speichern einer Referenz des Childrows-Array im Knoten
                nd_k.Tag = row_k.GetChildRows(rel_k)
            Next k
        Next i
    End Sub
 
 
    Private Sub Trv_NodeMouseClick(sender As Object,
             e As TreeNodeMouseClickEventArgs) Handles trv.NodeMouseClick
 
        dtx.Clear()
        'Level = 1: zweite Knotenebene
        If e.Node.Level = 1 Then
            Dim rows As DataRow() = DirectCast(e.Node.Tag, DataRow())
            For i As Integer = 0 To rows.Length - 1
                dtx.Rows.Add(rows(i).ItemArray)
            Next i
        End If
    End Sub
 
 
    Private Function GetNode(nodes As TreeNodeCollection, Key As String,
                          Optional ByVal text As String = "") As TreeNode
        Dim ind As Integer = nodes.IndexOfKey(Key)
        If ind >= 0 Then Return nodes(ind)
        If String.IsNullOrWhiteSpace(text) Then text = Key
        Return nodes.Add(Key, text)
    End Function
 
End Class


Beitrag wurde zuletzt am 04.03.18 um 08:33:57 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TreeView befüllen in VB20103.858ERBRU28.02.18 11:42
Re: TreeView befüllen in VB20102.718Souffleurlos28.02.18 16:00
Re: TreeView befüllen in VB20102.650ERBRU28.02.18 16:29
Beispiel: Datarow-Spaltenwerte in TreeView eintragen2.765Manfred X01.03.18 06:15
Re: TreeView befüllen in VB20102.657ERBRU01.03.18 13:36
Re: TreeView befüllen in VB20102.650Manfred X01.03.18 17:42
Re: TreeView befüllen in VB20102.648ERBRU02.03.18 14:05
Re: TreeView befüllen in VB20102.650Manfred X02.03.18 19:27
Re: TreeView befüllen in VB20102.597ERBRU03.03.18 19:45
Re: TreeView befüllen in VB20102.670Manfred X04.03.18 08:33
Re: TreeView befüllen in VB20102.547ERBRU04.03.18 13:16
Re: TreeView befüllen in VB20102.626Franki05.03.18 05:05
Re: TreeView befüllen in VB20102.513ERBRU08.03.18 14:45
Re: TreeView befüllen in VB20102.556Manfred X08.03.18 19:12
Re: TreeView befüllen in VB20102.535ERBRU08.03.18 19:26
Re: TreeView befüllen in VB20102.573Manfred X09.03.18 07:07
Re: TreeView befüllen in VB20102.569ERBRU09.03.18 08:50
Re: TreeView befüllen in VB20102.632Manfred X09.03.18 11:18
Re: TreeView befüllen in VB20102.555ERBRU09.03.18 15:08
Re: TreeView befüllen in VB20102.554Manfred X09.03.18 15:57
Re: TreeView befüllen in VB20102.508ERBRU09.03.18 19:01
Re: TreeView befüllen in VB20102.551Manfred X09.03.18 22:27
Re: TreeView befüllen in VB20102.419ERBRU10.03.18 09:42
Re: TreeView befüllen in VB20102.497Manfred X10.03.18 10:49
Re: TreeView befüllen in VB20102.467ERBRU10.03.18 10:58
Re: TreeView befüllen in VB20102.438Manfred X10.03.18 11:28
Re: TreeView befüllen in VB20102.472ERBRU10.03.18 12:44
Re: TreeView befüllen in VB20102.445Manfred X10.03.18 12:57
Re: TreeView befüllen in VB20102.426ERBRU10.03.18 13:29
Re: TreeView befüllen in VB20102.416Manfred X10.03.18 14:20
Re: TreeView befüllen in VB20102.414ERBRU10.03.18 16:14
Re: TreeView befüllen in VB20102.632Franki04.03.18 05:57
Re: TreeView befüllen in VB20102.547ERBRU09.03.18 08:38
Re: TreeView befüllen in VB20102.397Franki11.03.18 01:58
Re: TreeView befüllen in VB20102.455Manfred X11.03.18 10:41
Re: TreeView befüllen in VB20102.380ERBRU11.03.18 11:37
Re: TreeView befüllen in VB20102.461Manfred X11.03.18 12:49
Re: TreeView befüllen in VB20102.474ERBRU11.03.18 17:48
Re: TreeView befüllen in VB20102.419Manfred X12.03.18 06:21
Re: TreeView befüllen in VB20102.420ERBRU12.03.18 10:22
Re: TreeView befüllen in VB20102.467Manfred X12.03.18 11:34
Re: TreeView befüllen in VB20102.382ERBRU12.03.18 12:13
Re: TreeView befüllen in VB20102.433Manfred X12.03.18 12:31
Re: TreeView befüllen in VB20102.516ERBRU12.03.18 13:11
Re: TreeView befüllen in VB20102.460ERBRU12.03.18 15:37
Re: TreeView befüllen in VB20102.404ERBRU15.03.18 19:36

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