我是在 vb 中使用中继器的新手,我试图以编程方式了解如何使用嵌套的项目符号列表。我有在一个对象中生成我的数据的代码,System.Web.UI.WebControls.TreeView
我正试图将它放入一个嵌套的项目符号列表中。我有以下 vb 和 asp 代码:
TreeView.aspx
<asp:Repeater ID="repeater" runat="server" EnableViewState="False" OnItemDataBound="repeater_ItemDataBound">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:BulletedList ID="bulletedList" runat="server"></asp:BulletedList>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
树视图.aspx.vb
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim tNode As TreeNode
Dim treeView As New TreeView
Dim tNodeCollection As New 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
''' UPDATED
Private Sub searchChildNodes(childNodes As TreeNodeCollection, bList As BulletedList)
Dim tNode As TreeNode
For Each tNode In childNodes
bList.Items.Add(tNode.Value)
If tNode.ChildNodes.Count > 0 Then
searchChildNodes(tNode.ChildNodes, bList)
End If
Next
End Sub
最终,我的目标是生成一个嵌套列表,如下所示。
<ul>
<li>My WorkPlace
<ul>
<li>Dept 1
<ul>
<li>Office
<ul>
<li>Sub-Office</li>
</ul>
</li>
</ul>
</li>
<li>Dept 2</li>
<li>Dept 3</li>
</ul>
</li>
</ul>
我似乎无法让它工作。请让我知道我做错了什么以及如何纠正我的方法。
更新:我通过正确指定TreeNodeCollection
与转发器的数据绑定来更新我的代码。话虽如此,我还为 OnItemDataBound 添加了一个方法:
Protected Sub repeater_ItemDataBound(sender As Object, e As RepeaterItemEventArgs)
Dim tNode As TreeNode
Dim bList As New BulletedList
tNode = e.Item.DataItem
If (tNode Is Nothing) Then
Return
End If
bList = e.Item.FindControl("bulletedList")
bList.Items.Add(tNode.Text)
If tNode.ChildNodes.Count > 0 Then
searchChildNodes(tNode.ChildNodes, bList)
End If
End Sub
我仍然无法使用列表进行嵌套。我最终希望实现上面提到的嵌套列表。请告知,以便我可以纠正我的方法。