Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 具有分层数据的菜单_Asp.net_Vb.net - Fatal编程技术网

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…有什么建议吗?非常感谢您的时间…非常感谢。