Динамическое добавление нескольких пользовательских элементов управления vb.net
У меня есть пользовательский элемент управления, который возвращает таблицу данных, которая в некоторых случаях должна быть зациклена, отображая один поверх другого.
Я могу динамически добавить один экземпляр этого, поместив фиксированный placeholder
на странице.
Сейчас я пытаюсь понять, как добавить более одного, учитывая, что я не знаю, сколько может понадобиться, и я не хочу жестко кодировать заполнители.
Я пробовал следующее, но у меня только один экземпляр, предположительно, первый перезаписывается вторым
Мой HTML
<div id="showHere" runt="server"/>
VB
Dim thisPh As New PlaceHolder
thisPh.Controls.Add(showTable)
showHere.Controls.Add(thisPh)
Dim anotherPh As New PlaceHolder
anotherPh .Controls.Add(showTable)
showHere.Controls.Add(anotherPh)
Как мне сделать это добавить повторяющиеся таблицы в showHere
DIV?
3 ответа
Я бы посоветовал создать разные идентификаторы для каждой таблицы. Например,
Dim i As Integer
i = 0
For each tbl in ShowTables
tbl.ID = "MyTab" + i.ToString()
i = i + 1
showHere.Controls.Add(tbl)
showHere.Controls.Add(New LiteralControl("<br />"))
Next
С другой стороны, было бы более целесообразно, чтобы пользовательский / пользовательский элемент управления генерировал html для одной таблицы, а затем вкладывал пользовательский / пользовательский элемент управления в ретранслятор (или аналогичный элемент управления, такой как ListView и т. Д.).
Вы пробовали просто, это:
For each tbl in ShowTables
showHere.Controls.Add(tbl)
showHere.Controls.Add(New LiteralControl("<br />"))
Next
После обсуждения этой проблемы я наткнулся на решение ниже.
On button click()
LocationDiv.Visible = True
Dim existingItems As New List(Of Object)
If Not Session("existingItems") Is Nothing Then
existingItems = CType(Session("existingItems"), List(Of Object))
For Each item As Object In existingItems
LocationDiv.Controls.Add(item)
Next
existingItems.Clear()
End If
LocationDiv.Controls.Add(New LiteralControl("<b>" & Text & "</b>"))
For Each item As Object In LocationDiv.Controls
existingItems.Add(item)
Next
Session.Add("existingItems", existingItems)