vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
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 VB20104.357ERBRU28.02.18 11:42
Re: TreeView befüllen in VB20103.099Souffleurlos28.02.18 16:00
Re: TreeView befüllen in VB20103.018ERBRU28.02.18 16:29
Beispiel: Datarow-Spaltenwerte in TreeView eintragen3.150Manfred X01.03.18 06:15
Re: TreeView befüllen in VB20103.038ERBRU01.03.18 13:36
Re: TreeView befüllen in VB20103.020Manfred X01.03.18 17:42
Re: TreeView befüllen in VB20103.028ERBRU02.03.18 14:05
Re: TreeView befüllen in VB20103.022Manfred X02.03.18 19:27
Re: TreeView befüllen in VB20102.988ERBRU03.03.18 19:45
Re: TreeView befüllen in VB20103.050Manfred X04.03.18 08:33
Re: TreeView befüllen in VB20102.935ERBRU04.03.18 13:16
Re: TreeView befüllen in VB20103.002Franki05.03.18 05:05
Re: TreeView befüllen in VB20102.947ERBRU08.03.18 14:45
Re: TreeView befüllen in VB20102.943Manfred X08.03.18 19:12
Re: TreeView befüllen in VB20102.918ERBRU08.03.18 19:26
Re: TreeView befüllen in VB20102.953Manfred X09.03.18 07:07
Re: TreeView befüllen in VB20102.941ERBRU09.03.18 08:50
Re: TreeView befüllen in VB20103.000Manfred X09.03.18 11:18
Re: TreeView befüllen in VB20102.932ERBRU09.03.18 15:08
Re: TreeView befüllen in VB20102.934Manfred X09.03.18 15:57
Re: TreeView befüllen in VB20102.901ERBRU09.03.18 19:01
Re: TreeView befüllen in VB20102.928Manfred X09.03.18 22:27
Re: TreeView befüllen in VB20102.830ERBRU10.03.18 09:42
Re: TreeView befüllen in VB20102.880Manfred X10.03.18 10:49
Re: TreeView befüllen in VB20102.853ERBRU10.03.18 10:58
Re: TreeView befüllen in VB20102.815Manfred X10.03.18 11:28
Re: TreeView befüllen in VB20102.853ERBRU10.03.18 12:44
Re: TreeView befüllen in VB20102.829Manfred X10.03.18 12:57
Re: TreeView befüllen in VB20102.806ERBRU10.03.18 13:29
Re: TreeView befüllen in VB20102.786Manfred X10.03.18 14:20
Re: TreeView befüllen in VB20102.782ERBRU10.03.18 16:14
Re: TreeView befüllen in VB20103.067Franki04.03.18 05:57
Re: TreeView befüllen in VB20102.926ERBRU09.03.18 08:38
Re: TreeView befüllen in VB20102.766Franki11.03.18 01:58
Re: TreeView befüllen in VB20102.834Manfred X11.03.18 10:41
Re: TreeView befüllen in VB20102.743ERBRU11.03.18 11:37
Re: TreeView befüllen in VB20102.828Manfred X11.03.18 12:49
Re: TreeView befüllen in VB20102.860ERBRU11.03.18 17:48
Re: TreeView befüllen in VB20102.786Manfred X12.03.18 06:21
Re: TreeView befüllen in VB20102.792ERBRU12.03.18 10:22
Re: TreeView befüllen in VB20102.838Manfred X12.03.18 11:34
Re: TreeView befüllen in VB20102.773ERBRU12.03.18 12:13
Re: TreeView befüllen in VB20102.811Manfred X12.03.18 12:31
Re: TreeView befüllen in VB20102.888ERBRU12.03.18 13:11
Re: TreeView befüllen in VB20102.834ERBRU12.03.18 15:37
Re: TreeView befüllen in VB20102.792ERBRU15.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-2025 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