How To Use Asp Repeater With Nested Bulletedlist Programatically
I'm new to using repeaters in vb and I'm trying to understand how to it with a nested bulletedlist programatically. I have the code that generates my data within a System.Web.UI.We
Solution 1:
While I would have preferred to use < asp:BulletedList >
, I have the solution using HtmlGenericControl, < ul >, < li >
:
TreeView.aspx
<asp:RepeaterID="rptr"runat="server"EnableViewState="False"OnItemDataBound="repeater_ItemDataBound"><HeaderTemplate><ul><li>My WorkPlace
<ul></HeaderTemplate><ItemTemplate><liid="listItem"runat="server"></li></ItemTemplate><FooterTemplate></ul></li></ul></FooterTemplate></asp:Repeater>
TreeView.aspx.vb
ProtectedSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load
Dim tNode As TreeNode
Dim treeView AsNew TreeView
Dim tNodeCollection AsNew TreeNodeCollection
tNodeCollection = treeView.Nodes
' Code to generate and store within' a System.Web.UI.WebControls.TreeView object' ...' ...' ...
repeater.DataSource = tNodeCollection '''<-----UPDATED
repeater.DataBind()
End Sub
Protected Sub repeater_ItemDataBound(sender As Object, e As RepeaterItemEventArgs)
Dim tNode As TreeNode
Dim li As New HtmlGenericControl
Dim ul As New HtmlGenericControl("ul")
tNode = e.Item.DataItem
If (tNode Is Nothing) Then
Return
End If
li = e.Item.FindControl("listItem")
li.ID = tNode.Value
li.InnerHtml = tNode.Text
If tNode.ChildNodes.Count > 0 Then
li.Controls.Add(ul)
searchChildNodes(tNode.ChildNodes, ul)
EndIfEndSubPrivateSub searchChildNodes(childNodes As TreeNodeCollection, ul As HtmlGenericControl)
Dim tNode As TreeNode
ForEach tNode In childNodes
Dim li AsNew HtmlGenericControl("li")
li.ID = tNode.Value
li.InnerHtml = tNode.Text
ul.Controls.Add(li)
If tNode.ChildNodes.Count > 0ThenDim unorderedList AsNew HtmlGenericControl("ul")
li.Controls.Add(unorderedList)
searchChildNodes(tNode.ChildNodes, unorderedList)
EndIfNextEndSub
Post a Comment for "How To Use Asp Repeater With Nested Bulletedlist Programatically"