Динамическое добавление нескольких пользовательских элементов управления 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)
Другие вопросы по тегам