Skip to content Skip to sidebar Skip to footer

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"