1

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

Я могу динамически добавить один экземпляр этого объекта, разместив на странице фиксированный placeholder.

Теперь я пытаюсь решить, как добавить несколько, учитывая, что я не знаю, сколько может понадобиться. Я не хочу жестко кодировать Placeholders.

Я попытался следующие, но я просто получаю один экземпляр, предположительно, первый в перезаписи второй

Мой 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) 

Как я могу добавить повторные таблицы в div showHere?

ответ

1

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

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

+0

Вот и все! Не знаю, почему ... во всяком случае, он работает сейчас! благодаря –

1

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

For each tbl in ShowTables   
    showHere.Controls.Add(tbl) 
    showHere.Controls.Add(New LiteralControl("<br />")) 
Next 
+0

Это выглядит мило, но она по-прежнему отображает только одну таблицу –

+0

Вы уверены, что вы не установили некоторые CSS сценарий исправить положение таблицы (позиция: абсолютная ...), или размер DIV? –

+0

определенно. в отображаемом HTML ничего не отображается, только один isntance –

0

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

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)