簡體   English   中英

System.Web.UI.WebControls.TableCell的替代品

[英]Alternative to System.Web.UI.WebControls.TableCell

我有一個網站,代碼幾乎可以生成頁面上的所有內容。 主頁包含一個通過代碼構建的右側菜單。 它使用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類,以便我可以輕松定位內容。

是否有一個.net類可以用來從數據庫中獲取數據並創建div類?

當然還有其他選擇,但決定使用哪一個很大程度上取決於您要完成的內容以及您正在使用的.NET版本。

事實上, Panel控件確實輸出div到頁面,但如果你的唯一要求是“我想輸出div”,我不知道我會推薦它 - 當我需要控制時,我堅持使用Panels ,使用ASP.NET,像它包含的控件的可見性之類的東西。 但是,對於現有站點,它可能是TableCell控件最接近的“下降”替換。

Literal控件存在於大多數.NET版本中,讓您可以完全控制輸出到屏幕的內容,但是,與Panel控件一樣,它不是數據綁定控件; 您需要在代碼隱藏中獲取您的信息,使用它將您喜歡的任何內容添加到文字的.Text中。 這樣做的缺點是,從代碼隱藏類型轉換到我們想要的頁面的HTML完全違反了ASP.NET的方式。

ListView控件實際上是一個數據綁定控件 - 你給它一個類型的數據庫連接,它將遍歷結果並顯示一個列表。 您可以完全控制該列表中輸出的HTML,因此您可以使用div,lis等,但在確定要顯示的內容時使用邏輯會更加棘手(盡管幾乎不可能)。 (有一個較早的,相關的控件, Repeater ,使用起來更加笨拙,但在早期版本的.NET中存在)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM