Динамическое добавление нескольких пользовательских элементов управления vb.net - PullRequest
1 голос
/ 27 февраля 2012

У меня есть пользовательский элемент управления, который возвращает таблицу данных, которую в некоторых случаях необходимо зацикливать, отображая один поверх другого.

Я могу динамически добавить один экземпляр этого, поместив фиксированный 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 ]

1 голос
/ 27 февраля 2012

Я бы посоветовал создать разные идентификаторы для каждой таблицы. Например,

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 и т. Д.).

1 голос
/ 27 февраля 2012

Вы пробовали просто, это:

For each tbl in ShowTables        
    showHere.Controls.Add(tbl)
    showHere.Controls.Add(New LiteralControl("<br />"))
Next
0 голосов
/ 10 сентября 2012

После обсуждения этой проблемы я наткнулся на приведенное ниже решение.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...