vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 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
Beispiel: Datarow-Spaltenwerte in TreeView eintragen 
Autor: Manfred X
Datum: 01.03.18 06:15

Ich nehme an, die Daten werden in Dataset/Datatable geladen.

Hier ein Beispiel zur Umsetzung von Spaltenwerten (Strings) aus
Datarows in eine Treeview-Knotenhierarchie.
Public Class FrmDatatable2Treeview
 
    Dim dt As New DataTable
    Dim bs As New BindingSource
 
    Dim dgv As New DataGridView With
        {.Parent = Me, .Width = 300, .DataSource = bs}
 
    Dim trv As New TreeView With
        {.Parent = Me, .Left = 310, .Width = 300, .Scrollable = True}
 
 
    Private Sub FrmDatatable2Treeview_Load(sender As Object,
                                 e As EventArgs) Handles MyBase.Load
 
        Me.Size = New Size(630, 300)
 
        'Testdaten
        With dt
            With .Columns
                .Add("Menge", GetType(Integer))
                .Add("Material") : .Add("Händler") : .Add("Qualität")
                .Add("Status")
            End With
 
            With .Rows
                .Add(20, "Holz", "Meyer", "Premium", "lagernd")
                .Add(40, "Kohlen", "Schulz", "Bruch", "bestellt")
                .Add(45, "Kohlen", "schulz", "Bruch", "bestellt")
                .Add(12, "Koks", "Schneider", "Bruch", "lagernd")
                .Add(10, "Holz", "Meyer", "Medium", "lagernd")
                .Add(15, "Kohlen", "Schulz", "Premium", "geliefert")
                .Add(20, "Propan", "Meyer", "Premium", "geliefert")
                .Add(5, "Propan", "Schulz", "Medium", "bestellt")
                .Add(10, "Holz", "Schulz", "Bruch", "lagernd")
                .Add(30, "Kohlen", "Müller", "Medium", "")
                .Add(20, "Kohlen", "Müller", "Bruch", "")
                .Add(200, "Koks", "Müller", "Bruch", "lagernd")
            End With
        End With
 
        bs.DataSource = dt 'Datenbindung
 
        'Sortieren der Datenspalten: Festlegung der Knotenfolge im Treeview 
        bs.Sort = "Händler DESC, Material, Qualität"
 
        'Übertragung von Spaltenwerten ins Treeview (Knoten-Hierarchie): 
        'Händler(2), Material(1), Qualität(3), Menge(0)
        DatatableColumns2Treeview(bs, New Integer() {2, 1, 3, 0}, trv)
 
    End Sub
 
 
    Private Function DatatableColumns2Treeview(ByVal bs As BindingSource, _
                     ByVal columnindices() As Integer, _
                     trv As TreeView) As Boolean
 
        If bs Is Nothing Or trv Is Nothing Then Return False
        If bs.DataSource Is Nothing Then Return False
        If Not TypeOf bs.DataSource Is DataTable Then Return False
 
        'Spaltenindices prüfen
        If columnindices Is Nothing OrElse
           columnindices.Length < 2 Then Return False
 
        For i As Integer = 0 To columnindices.Length - 1
            If columnindices(i) < 0 Or
                columnindices(i) > dt.Columns.Count - 1 Then Return False
        Next i
 
        trv.Nodes.Clear()
 
        Try
            'Zeilen in der Datatable durchlaufen 
            For r As Integer = 0 To bs.Count - 1
                Dim row As DataRow = DirectCast(bs(r), DataRowView).Row
                'Knoten-Pfad aus Spaltenwerten zusammensetzen
                Dim path As String = ""
                For i As Integer = 0 To columnindices.Length - 1
                    path &= row(columnindices(i)).ToString
                    If i < columnindices.Length - 1 Then path &= _
                      trv.PathSeparator
                Next i
 
                GetTreeNodeByPath(trv.Nodes, path)
            Next r
            Return True
        Catch
            Return False
        End Try
    End Function
 
 
    ''' <summary>In der Collection wird ein Pfad-Knoten ermittelt/erstellt</summary>
    ''' <param name="Nodes">Node-Collection</param>
    ''' <param name="path">zu suchender/zu erstellender Pfad</param>
    ''' <returns>Treenode</returns>
    Private Function GetTreeNodeByPath(ByVal Nodes As TreeNodeCollection, _
                                       path As String) As TreeNode
 
        Dim parts() As String =
            path.Split({trv.PathSeparator}, StringSplitOptions.None)
 
        Dim nd As TreeNode, ind As Integer, c As Integer = -1
 
        'Pfad durchlaufen
        Do
            c += 1
            ind = Nodes.IndexOfKey(parts(c))
            If ind = -1 Then
                'Pfad-Knoten fehlt in Auflistung, wird erstellt 
                nd = Nodes.Add(parts(c), parts(c))
            Else
                nd = Nodes(parts(c))
            End If
            Nodes = nd.Nodes
        Loop While c < parts.Length - 1
 
        Return nd
 
    End Function
End Class


Beitrag wurde zuletzt am 01.03.18 um 06:17:57 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TreeView befüllen in VB20103.857ERBRU28.02.18 11:42
Re: TreeView befüllen in VB20102.717Souffleurlos28.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.669Manfred 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.512ERBRU08.03.18 14:45
Re: TreeView befüllen in VB20102.556Manfred X08.03.18 19:12
Re: TreeView befüllen in VB20102.534ERBRU08.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.554ERBRU09.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.415Manfred X10.03.18 14:20
Re: TreeView befüllen in VB20102.414ERBRU10.03.18 16:14
Re: TreeView befüllen in VB20102.631Franki04.03.18 05:57
Re: TreeView befüllen in VB20102.547ERBRU09.03.18 08:38
Re: TreeView befüllen in VB20102.395Franki11.03.18 01:58
Re: TreeView befüllen in VB20102.454Manfred X11.03.18 10:41
Re: TreeView befüllen in VB20102.379ERBRU11.03.18 11:37
Re: TreeView befüllen in VB20102.461Manfred X11.03.18 12:49
Re: TreeView befüllen in VB20102.473ERBRU11.03.18 17:48
Re: TreeView befüllen in VB20102.418Manfred X12.03.18 06:21
Re: TreeView befüllen in VB20102.420ERBRU12.03.18 10:22
Re: TreeView befüllen in VB20102.466Manfred 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