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
Re: treeview aus DB erstellen 
Autor: Maywood
Datum: 12.09.07 14:53

Hm. Den Code kannst du fast 1:1 übernehmen. Nur die Methode FillDataTable() müsstest du einwenig anpassen/ändern.

Da ich aber gerade etwas Zeit übrig hatte, hab ich das mal schnell für Dich erledigt.

Angenommen es existiert folgende Tabelle in einer Db (mit dem Namen TestDb)
Table: TreeViewData
--------------------------
- id			int			4	
- parentid	int			4	
- caption	 char		255
Die Spalte "id" ist der Primärschlüssel.

Der Inahlt der Tabelle könnte wie folgt sein:
id	parentid	caption
--------------------------
1	0			Root                                                                                                                                                                                                                                                           
2	1			Item1                                                                                                                                                                                                                                                          
3	1			Item2                                                                                                                                                                                                                                                          
4	2			SubItem1
In der Spalte "parentid" legst du fest zu welchen Node der Eintrag gehört. 0 ist die Root.

Mit folgendem Code ist es dann möglich ein TreeView automatisch einzulesen:
Option Explicit On
Option Strict On
 
Imports System.Data
 
Public Partial Class MainForm
 
	Dim cnStr As String = "Persist Security Info=False;User ID=<USERID>;Initial" & _
  "Catalog=<DATABASENAME>"
 
	Public Sub New()
		' The Me.InitializeComponent call is required for Windows Forms designer 
' support.
		Me.InitializeComponent()
 
		'
		' TODO : Add constructor code after InitializeComponents
		'
	End Sub
 
	Sub Button1Click(ByVal sender As Object, ByVal e As EventArgs)
		Me.TreeView1.BeginUpdate()
		Dim dt As DataTable = New DataTable("TreeViewData")
        Me.FillDataTable(dt)
        Me.FillTreeView(dt)
        Me.TreeView1.ExpandAll()
        Me.TreeView1.EndUpdate()
	End Sub
 
	Public Sub FillDataTable(ByRef dt As DataTable)
        Try
            Dim sql As String = "SELECT id, parentid, caption FROM TreeViewData" & _
              "ORDER BY ID ASC"
            Dim cn As Data.SqlClient.SqlConnection = New _
            Data.SqlClient.SqlConnection(cnStr)
            Dim da As Data.SqlClient.SqlDataAdapter = New _
            Data.SqlClient.SqlDataAdapter(sql, cn)
            da.Fill(dt)
        Catch ex As Data.SqlClient.SqlException
            MessageBox.Show(ex.Message)
        End Try
    End Sub
 
    Public Sub FillTreeView(ByVal dt As DataTable)
        Dim parentId, id As Integer 
        Dim tn As TreeNode = Nothing 
        For Each dr As DataRow In dt.Rows
            tn = New TreeNode(dr("caption").ToString())
            parentId = CInt(dr("parentid"))
            id = CInt(dr("id"))
            If parentId = 0 Then
                Me.TreeView1.Nodes.Add(tn)
            End If
            FillSubTreeNode(tn, dt, id)
        Next
 
    End Sub
 
    Public Sub FillSubTreeNode(ByRef tn As TreeNode, ByRef dt As DataTable, _
      ByVal id As Integer)
        Dim foundRows() As DataRow = dt.Select("parentid = " + id.ToString(), _
        "id")
        Dim tnSub As TreeNode = Nothing
        dim currentId as Integer = 0
        For Each dr As DataRow In foundRows
            tnSub = New TreeNode((dr("caption").ToString))
            currentId = CInt(dr("id"))
            tn.Nodes.Add(tnSub)
            FillSubTreeNode(tnSub, dt, currentId)
        Next
    End Sub
 
End Class
Falls etwas unklar ist, einfach fragen!

PS: Das ist eine von viele Möglichkeiten wie man das realisieren könnte. Es gibt auch hierfür andere Wege... dieser ist aber ihmo mit der einfachste und flexibelste.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
treeview aus DB erstellen3.079Schili11.09.07 13:14
Re: treeview aus DB erstellen1.570Maywood11.09.07 13:54
Re: treeview aus DB erstellen1.550Schili12.09.07 07:30
Re: treeview aus DB erstellen1.702Maywood12.09.07 14:53
Re: treeview aus DB erstellen1.531Schili12.09.07 19:14
Re: treeview aus DB erstellen1.468Maywood14.09.07 09:48
Re: treeview aus DB erstellen1.458Schili19.09.07 09:10
Re: treeview aus DB erstellen1.490Maywood19.09.07 15:58
Re: treeview aus DB erstellen1.429Schili20.09.07 09:06
Re: treeview aus DB erstellen1.401Schili20.09.07 09:09
Re: treeview aus DB erstellen1.440Maywood20.09.07 13:34
Re: treeview aus DB erstellen - PS1.437Maywood20.09.07 13:40
Re: treeview aus DB erstellen1.429Schili20.09.07 13:43
Re: treeview aus DB erstellen1.408Maywood20.09.07 14:50
Re: treeview aus DB erstellen1.431Schili22.09.07 15:24
Re: treeview aus DB erstellen1.502Maywood25.09.07 17:11

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