Asp.net 具有分层数据的菜单
我有一个分类的层次表,它的形式是Asp.net 具有分层数据的菜单,asp.net,vb.net,Asp.net,Vb.net,我有一个分类的层次表,它的形式是NodeIDParentIDNodeName 下面是我正在使用的代码生成ASP.NET菜单项,并将其绑定到菜单控件 Private Sub displayMenu() Using con As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("HagglerEntLibConStr").ConnectionString)
NodeID
ParentID
NodeName
下面是我正在使用的代码生成ASP.NET菜单项
,并将其绑定到菜单控件
Private Sub displayMenu()
Using con As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("HagglerEntLibConStr").ConnectionString)
Using sql As New SqlCommand("Select NodeID,ParentID,NodeName FROM Nodes", con)
con.Open()
Dim r As SqlDataReader = sql.ExecuteReader 'stored procedure that returns the above SqlDataReader
Dim tempMaster As New MenuItem()
Dim bagMaster(700) As MenuItem
Dim j As Integer = 0
Do While r.Read()
tempMaster.Value = r("NodeID").ToString()
tempMaster.ToolTip = r("ParentID").ToString()
tempMaster.Text = r("NodeName").ToString()
tempMaster.NavigateUrl = ""
bagMaster(j) = tempMaster
j += 1
tempMaster = New MenuItem()
Loop
r.Close()
Menu1.Items.Clear()
For i As Integer = 0 To j - 1
If i = 0 Then
Menu1.Items.Add(bagMaster(i))
Else
For x As Integer = 0 To j - 1
If bagMaster(i).ToolTip = bagMaster(x).Value Then
Dim c As MenuItem = bagMaster(x)
'you can change the tool tip here if you want
c.ChildItems.Add(bagMaster(i))
End If
Next x
End If
Next i
'Menu1.Items.RemoveAt(0)
End Using
End Using
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
displayMenu()
End Sub
一切正常…但是这种方法的主要缺点是菜单控件创建HTML表格
…我在表格中有大约1000行..这创建了一个多级菜单…它在页面中添加了大量HTML表格
,并大大增加了页面加载时间…我如何处理这个问题问题这是菜单填充的方式
您尝试过该酒店吗
价值观:
- 默认。(这是默认值)。渲染模式取决于控件属性,如果此设置设置为3.5,则默认渲染为
表格
,如果此值为4.0,则默认渲染模式为列表ul
。您可以在web.config文件中全局更改此设置:
<system.web>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
- 桌子。呈现为表
- 名单。作为列表呈现
更新1
由于您使用的是.NETFramework3.5,因此最好的方法可能是使用
基本上,适配器在特定控件上工作,在适配器中可以更新目标控件的呈现,在本例中是菜单
控件
我还没有创建控件适配器,因此我只能为您指出正确的方向,无法向您提供更多信息。通过谷歌搜索,我发现这篇文章似乎很有希望:
此属性在Visual Studio 2008中可用吗??我是说.NET3.5?我正在使用3.5…有什么建议吗?非常感谢您的时间…非常感谢。