0

ページ上のほぼすべてのコードを生成する Web サイトがあります。ホームページは、コードによって構築されている右側のメニューで構成されています。System.Web.UI.WebControls.TableCell クラスを使用し、新しい項目ごとに td を作成します。

コードのスニペットを次に示します。

Public Sub BuildMainMenuStructure(ByVal Cell As TableCell, _
                                    ByVal Contents As DataTable, _
                                    ByVal ReadMode As Boolean, _
                                    ByVal CurrentPage As String, _
                                    ByVal RecSecurity As ApplicationRoleSecurity, _
                                    ByVal SourcePageRef As Integer, _
                                    ByVal IncludeMyIntranetPanel As Boolean)

    '-----------------------------------------------------------------
    'Div1 Contents
    '-----------------------------------------------------------------
    'Set up the contents in a div (panel) called pnlMainMenu1
    Dim mmContents As New MainMenuContents
    mmContents.ID = "pcaMainMenuContents"
    mmContents.SetControl(Contents, _
                          ReadMode, _
                          CurrentPage, _
                          RecSecurity, _
                          SourcePageRef)

    mintContentsCount = mmContents.Count

    Dim pnlMainMenu1 As New Panel
    With pnlMainMenu1
        .ID = "pcaMainMenuContentsPanel"
        'By default, this panel is visible:
        .Style.Add("visibility", "visible")
        .Controls.Add(mmContents)
    End With

コードの別の領域では、ホームページの別のセクションが生成されます。

   If IncludeMyIntranetPanel And ReadMode Then

        'Set up the contents in a div (panel) called pnlMainMenu2
        Dim mmMyIntranet As New MainMenuMyIntranet
        mmMyIntranet.ID = "pcaMainMenuMyIntranet"
        mmMyIntranet.SetControl(Contents, _
                              ReadMode, _
                              CurrentPage, _
                              RecSecurity, _
                              SourcePageRef)

        Dim pnlMainMenu2 As New Panel
        With pnlMainMenu2
            .ID = "pcaMainMenuMyIntranetPanel"
            'By default, this panel is visible:
            .Style.Add("visibility", "visible")
            .Controls.Add(mmMyIntranet)
        End With

        'Add it to the cell:
        Cell.Controls.Add(pnlMainMenu2)

    End If 'End If IncludeMyIntranetPanel

Cell.Controls.Add(pnlMainMenu2) を介してコンテンツを追加する

ホームページのスキンを変更しようとしています。理想的には、コンテンツを簡単に配置できるように、DIV クラスを生成したいと考えています。

データベースからデータを取得して div クラスを作成するために使用できる .net クラスはありますか?

4

1 に答える 1

2

確かに代替案はありますが、どちらを使用するかは、達成しようとしていることと、使用している.NETのバージョンによって大きく異なります。

実際、Panelコントロールはページにdivを出力しますが、唯一の要件が「divを出力したい」である場合、それをお勧めするかどうかはわかりません。制御が必要な場合はPanelを使用します。 、ASP.NETを使用して、含まれているコントロールの可視性など。ただし、既存のサイトの場合、これはおそらくTableCellコントロールの最も近い「ドロップイン」置換です。

リテラルコントロールは.NETのほとんどのバージョンに存在し、画面に出力される内容を完全に制御できますが、Panelコントロールと同様に、データにバインドされたコントロールではありません。コードビハインドで情報を取得する必要があります。これを使用して、リテラルの.Textに好きなものを追加します。これの欠点は、コードビハインドからページに必要なHTMLを正確にダンプすると、ASP.NETの方法に反することです。

ListViewコントロールは、実際にはデータバインドされたコントロールです。ある種のデータベース接続を指定すると、結果がループしてリストが表示されます。そのリストに出力されるHTMLをかなり完全に制御できるので、div、lisなどを使用できますが、何を表示するかを決定する際にロジックを使用するのは難しいでしょう(不可能にはほど遠いですが)。(以前の関連するコントロールであるRepeaterがあります。これは使いにくいですが、以前のバージョンの.NETに存在します)

于 2012-03-02T16:23:47.833 に答える