Альтернатива System.Web.UI.WebControls.TableCell
У меня есть веб-сайт, код которого генерирует практически все на странице. Домашняя страница состоит из правильного меню, которое создается с помощью кода. Он использует класс 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 ответ
Конечно, есть альтернативы, но решение о том, какой из них использовать, во многом зависит от того, что именно вы пытаетесь достичь, и от того, какую версию.NET вы используете.
Элемент управления Panel, на самом деле, выводит div на страницу, хотя, если ваше единственное требование - "Я хочу вывести div", я не знаю, что я бы порекомендовал его - я придерживаюсь Panels, когда мне нужно контролировать, используя ASP.NET, такие вещи, как видимость элементов управления, которые он содержит. Однако для существующего сайта он, вероятно, является ближайшей заменой элемента управления TableCell.
Элемент управления Literal существует в большинстве версий.NET и позволяет вам полностью контролировать то, что выводится на экран, но, как и элемент управления Panel, это не элемент управления с привязкой к данным; вам нужно будет получить свою информацию в коде, используйте ее, чтобы добавить все, что вам нравится, в.Text вашего литерала. Недостатком этого является то, что выгрузка именно того HTML-кода, который мы хотим, на страницу из-за кода, идет вразрез с образом ASP.NET.
Элемент управления ListView на самом деле является элементом управления с привязкой к данным - вы предоставляете ему соединение с базой данных определенного типа, и оно будет перебирать результаты и отображать список. Вы имеете достаточно полный контроль над HTML, который выводится в этом списке, так что вы можете использовать div, lis и т. Д., Но будет сложнее (хотя и почти невозможно) использовать логику при определении того, что отображать. (Существует более ранний связанный элемент управления, Repeater, который более удобен в использовании, но существует в более ранних версиях.NET)