Альтернатива System.Web.UI.WebControls.TableCell - PullRequest
0 голосов
/ 02 марта 2012

У меня есть веб-сайт, код которого генерирует практически все на странице. Домашняя страница состоит из правильного меню, которое создается с помощью кода. Он использует класс System.Web.UI.WebControls.TableCell и создает тд для каждого нового элемента.

Вот фрагмент кода:

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?

1 Ответ

2 голосов
/ 02 марта 2012

Конечно, есть альтернативы, но решение о том, какой из них использовать, во многом зависит от того, что именно вы пытаетесь достичь, и от того, какую версию .NET вы используете.

Панель control фактически выводит div на страницу, хотя, если ваше единственное требование - «Я хочу вывести div», я не знаю, рекомендую ли я это - я придерживаюсь Panels, когда мне нужноконтроль, используя ASP.NET, такие вещи, как видимость для элементов управления, которые он содержит.Однако для существующего сайта это, вероятно, самая близкая замена для элемента управления TableCell.

Элемент управления Literal существует в большинстве версий .NET и позволяет вам получить полныйконтроль над тем, что выводится на экран, но, как и элемент управления Panel, это не элемент управления с привязкой к данным;вам нужно будет получить свою информацию в коде, используйте ее, чтобы добавить все, что вам нравится, в .Text вашего литерала.Недостатком этого является то, что выгрузка именно того HTML-кода, который мы хотим, на страницу из своего рода кода идет вразрез с ASP.NET.

Элемент управления ListView на самом деле является элементом управления на основе данных - вы даетеэто соединение с базой данных какого-либо типа, и оно будет зацикливаться на результатах и ​​отображать список.Вы имеете достаточно полный контроль над HTML, который выводится в этом списке, так что вы можете использовать div, lis и т. Д., Но будет сложнее (хотя и практически невозможно) использовать логику при определении того, что отображать.(Существует более ранний связанный элемент управления Повторитель , который более удобен в использовании, но существует в более ранних версиях .NET)

...