Hallo,
ich habe meinen eigenen SiteMap Provider geschrieben der die Daten aus Access holt.
Leider zeigt die TreeView die auf diesen Provider geht nur die Root an. alle anderen werden zwar korrekt ausgelesen aber nicht angezeigt...
Wäre klasse wenn mir jemand sagen könnte warum!
Hier der Code:
ich habe meinen eigenen SiteMap Provider geschrieben der die Daten aus Access holt.
Leider zeigt die TreeView die auf diesen Provider geht nur die Root an. alle anderen werden zwar korrekt ausgelesen aber nicht angezeigt...
Wäre klasse wenn mir jemand sagen könnte warum!
Hier der Code:
Code:
Dim rootNodeId As Integer = 0 If accessConnection.State = ConnectionState.Closed Then accessConnection.Open() End If Dim rootNodeCommand As New OleDbCommand("SELECT S_ID, S_Path, S_Title FROM T_Sites WHERE S_Parent = 0", accessConnection) Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader() If rootNodeReader.HasRows Then rootNodeReader.Read() rootNodeId = rootNodeReader.GetInt32(0) Dim tmpID As Integer = rootNodeID ' Create a SiteMapNode that references the current StaticSiteMapProvider. aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2)) Else Return Nothing End If rootNodeReader.Close() PopulateChildNode(rootNodeId, RootNode) ' Select the child nodes of the root node. accessConnection.Close() End If Return aRootNode End SyncLock End Function 'BuildSiteMap Protected Sub PopulateChildNode(ByVal ParentID As Integer, ByRef Parentnode As SiteMapNode) If accessConnection.State = ConnectionState.Closed Then accessConnection.Open() End If Dim NodeCommand As New OleDbCommand("SELECT S_ID, S_Path, S_Title FROM T_Sites WHERE S_Parent = ?", accessConnection) Dim NodeParam As New OleDbParameter("S_Parent", OleDbType.Integer) NodeParam.Value = ParentID NodeCommand.Parameters.Add(NodeParam) Dim NodeReader As OleDbDataReader = NodeCommand.ExecuteReader() If NodeReader.HasRows Then While NodeReader.Read Dim ChildNode As SiteMapNode = Nothing Dim NodeID As Integer NodeID = NodeReader.GetInt32(0) Dim a As String = NodeID.ToString() Dim b As String = "" If Not NodeReader.IsDBNull(1) Then b = NodeReader.GetString(1) End If 'Dim b As String = NodeReader.GetString(1) Dim c As String = NodeReader.GetString(2) ChildNode = New SiteMapNode(Me, a, b, c) AddNode(ChildNode, Parentnode) PopulateChildNode(NodeID, ChildNode) End While NodeReader.Close() ' Create a SiteMapNode that references the current StaticSiteMapProvider. Else 'Return Nothing End If End Sub