Vb.net 如何以编程方式使用带嵌套项目符号列表的asp repeater
我对在vb中使用转发器还不熟悉,我试图理解如何通过编程方式使用嵌套的项目符号列表。我有在Vb.net 如何以编程方式使用带嵌套项目符号列表的asp repeater,vb.net,treeview,html-lists,repeater,bulletedlist,Vb.net,Treeview,Html Lists,Repeater,Bulletedlist,我对在vb中使用转发器还不熟悉,我试图理解如何通过编程方式使用嵌套的项目符号列表。我有在System.Web.UI.WebControls.TreeView对象中生成数据的代码,我正试图将其放入嵌套的bulletedlist中。我有以下vb和asp代码: TreeView.aspx <asp:Repeater ID="repeater" runat="server" EnableViewState="False" OnItemDataBound="repeater_ItemDataBou
System.Web.UI.WebControls.TreeView
对象中生成数据的代码,我正试图将其放入嵌套的bulletedlist中。我有以下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>
<asp:Repeater ID="rptr" runat="server" EnableViewState="False" OnItemDataBound="repeater_ItemDataBound">
<HeaderTemplate>
<ul>
<li>My WorkPlace
<ul>
</HeaderTemplate>
<ItemTemplate>
<li id="listItem" runat="server"></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</li>
</ul>
</FooterTemplate>
</asp:Repeater>
我仍然无法使用列表进行嵌套。我最终希望实现上面提到的嵌套列表。请告知,以便我可以纠正我的方法。虽然我更愿意使用
,但我有使用HtmlGenericControl,,的解决方案:
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>
<asp:Repeater ID="rptr" runat="server" EnableViewState="False" OnItemDataBound="repeater_ItemDataBound">
<HeaderTemplate>
<ul>
<li>My WorkPlace
<ul>
</HeaderTemplate>
<ItemTemplate>
<li id="listItem" runat="server"></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</li>
</ul>
</FooterTemplate>
</asp:Repeater>
- 我的工作场所
TreeView.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
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
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)
End If
End Sub
Private Sub searchChildNodes(childNodes As TreeNodeCollection, ul As HtmlGenericControl)
Dim tNode As TreeNode
For Each tNode In childNodes
Dim li As New HtmlGenericControl("li")
li.ID = tNode.Value
li.InnerHtml = tNode.Text
ul.Controls.Add(li)
If tNode.ChildNodes.Count > 0 Then
Dim unorderedList As New HtmlGenericControl("ul")
li.Controls.Add(unorderedList)
searchChildNodes(tNode.ChildNodes, unorderedList)
End If
Next
End Sub
Protected Sub Page_Load(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
树状结构
暗淡的树状视图作为新树状视图
Dim tNodeCollection作为新的TreeNodeCollection
tNodeCollection=treeView.Nodes
'要在其中生成和存储的代码
'一个System.Web.UI.WebControl.TreeView对象
' ...
' ...
' ...
repeater.DataSource=tNodeCollection''0
li.Controls.Add(ul)
searchChildNodes(tNode.ChildNodes,ul)
如果结束
端接头
私有子searchChildNodes(childNodes作为TreeNodeCollection,ul作为HtmlGenericControl)
树状结构
对于子节点中的每个tNode
Dim li作为新的HtmlGenericControl(“li”)
li.ID=tNode.Value
li.InnerHtml=tNode.Text
ul.控制添加(li)
如果tNode.ChildNodes.Count>0,则
Dim无序列表作为新的HtmlGenericControl(“ul”)
li.Controls.Add(无序列表)
searchChildNodes(tNode.ChildNodes,无序列表)
如果结束
下一个
端接头
虽然我更喜欢使用
,但我有使用HtmlGenericControl,,的解决方案:
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>
<asp:Repeater ID="rptr" runat="server" EnableViewState="False" OnItemDataBound="repeater_ItemDataBound">
<HeaderTemplate>
<ul>
<li>My WorkPlace
<ul>
</HeaderTemplate>
<ItemTemplate>
<li id="listItem" runat="server"></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</li>
</ul>
</FooterTemplate>
</asp:Repeater>
- 我的工作场所
TreeView.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
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
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)
End If
End Sub
Private Sub searchChildNodes(childNodes As TreeNodeCollection, ul As HtmlGenericControl)
Dim tNode As TreeNode
For Each tNode In childNodes
Dim li As New HtmlGenericControl("li")
li.ID = tNode.Value
li.InnerHtml = tNode.Text
ul.Controls.Add(li)
If tNode.ChildNodes.Count > 0 Then
Dim unorderedList As New HtmlGenericControl("ul")
li.Controls.Add(unorderedList)
searchChildNodes(tNode.ChildNodes, unorderedList)
End If
Next
End Sub
Protected Sub Page_Load(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
树状结构
暗淡的树状视图作为新树状视图
Dim tNodeCollection作为新的TreeNodeCollection
tNodeCollection=treeView.Nodes
'要在其中生成和存储的代码
'一个System.Web.UI.WebControl.TreeView对象
' ...
' ...
' ...
repeater.DataSource=tNodeCollection''0
li.Controls.Add(ul)
searchChildNodes(tNode.ChildNodes,ul)
如果结束
端接头
私有子searchChildNodes(childNodes作为TreeNodeCollection,ul作为HtmlGenericControl)
树状结构
对于子节点中的每个tNode
Dim li作为新的HtmlGenericControl(“li”)
li.ID=tNode.Value
li.InnerHtml=tNode.Text
ul.控制添加(li)
如果tNode.ChildNodes.Count>0,则
Dim无序列表作为新的HtmlGenericControl(“ul”)
li.Controls.Add(无序列表)
searchChildNodes(tNode.ChildNodes,无序列表)
如果结束
下一个
端接头
似乎没有为中继器指定数据源,因此repeater.DataBind()
可能是冗余的(实际上,它可能正在清除中继器)。此外,我不确定项目符号列表控件是否支持嵌套。讨论嵌套中继器,快速搜索显示有几种方法可以将树视图呈现为无序列表(但尚未尝试)。您是对的。repeater.DataBind()正在清除repeater,删除它后,列表将立即加载(但它不是嵌套的)。同样是的,bulletedlist不支持本机嵌套,这就是为什么我选择按建议使用中继器。我主要关心的是获取嵌套列表,目前我无法使用这些列表。似乎没有为中继器指定数据源,因此repeater.DataBind()
可能是多余的(实际上,它可能正在清除中继器)。此外,我不确定项目符号列表控件是否支持嵌套。讨论嵌套中继器,快速搜索显示有几种方法可以将树视图呈现为无序列表(但尚未尝试)。您是对的。repeater.DataBind()正在清除repeater,删除它后,列表将立即加载(但它不是嵌套的)。同样是的,bulletedlist不支持本机嵌套,这就是为什么我选择按建议使用中继器。我主要关心的是获取嵌套列表,而目前我无法使用这些列表。