Альтернатива 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?


person SOLDIER-OF-FORTUNE    schedule 02.03.2012    source источник


Ответы (1)


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

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

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

элемент управления ListView на самом деле является элементом управления с привязкой к данным — вы предоставляете ему подключение к базе данных. некоторого типа, и он будет перебирать результаты и отображать список. У вас есть достаточно полный контроль над HTML, который выводится в этом списке, поэтому вы можете использовать div, lis и т. д., но будет сложнее (хотя и не невозможно) использовать логику для определения того, что отображать. (Существует более ранний связанный элемент управления, Повторитель, использовать его неудобно, но он существует в более ранних версиях .NET)

person Sheldon Griffin    schedule 02.03.2012
comment
Я немного многословен, но чувствую, что должен повторить: ни элемент управления Panel, ни элемент управления Literal не имеют какой-либо встроенной формы взаимодействия с базой данных; вам нужно будет сделать свою базу данных и добавить вывод через программный код. Кроме того, элемент управления Panel на самом деле не принимает текст, в отличие от TableCell — да, он выводит DIV, но вам нужно добавить элемент управления Label или HyperLink и т. д., чтобы фактически вывести текст. - person Sheldon Griffin; 02.03.2012
comment
видите, проблема с сайтом, с которым я работаю, заключается в том, что все сгенерировано базой данных/кодом. Я не думаю, что разработчик знал, где на самом деле таблицы стилей! Ходят разговоры о скинировании домашней страницы, но происходит много всего, так что дело не в скинировании домашней страницы с новым дизайном. - person SOLDIER-OF-FORTUNE; 02.03.2012