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に設定されている場合、デフォルトのレンダリングはです。tableこの値が4.0の場合、デフォルトのレンダリングモードはリスト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 に答える