2

我在这个表格中有一个类别的层次表NodeID ParentID NodeName

以下是我正在使用的代码生成ASP.NET MENU ITEMS并将其绑定到MENU CONTROL

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 

一切正常......但这种方法的主要缺点是Menu CONTROL创建HTML TABLES......我在表格中有大约 1000 行......这创建了一个多级菜单......这HTML Tables在页面中添加了很多并增加了页面加载时间急剧...我该如何解决这个问题?这是菜单的填充方式。

在此处输入图像描述

4

1 回答 1

1

您是否尝试过使用RenderingMode属性?

价值观:

  • 默认。(这是默认值)。渲染模式取决于RenderingCompatibility控件属性,如果该设置设置为3.5,则默认渲染为 a table,如果该值为4.0,则默认渲染模式为 list ul。您可以在 web.config 文件中全局更改此设置:

    <system.web>
        <pages controlRenderingCompatibilityVersion="4.0"/>
    </system.web>
    
  • 桌子。呈现为表格

  • 列表。呈现为列表

更新 1

由于您使用的是 .Net Framework 3.5,因此完成此操作的最佳方法可能是使用控制适配器

基本上适配器在特定控件上工作,并且在适配器中您可以更新目标控件的呈现,在这种情况下是Menu控件

我还没有创建控制适配器,所以除了为您指明正确的方向之外,我无法为您提供更多信息,谷歌搜索我发现这篇文章似乎很有希望:

http://msdn.microsoft.com/en-us/magazine/cc163543.aspx

于 2012-09-22T18:41:57.917 回答