动态添加多个用户控件vb.net

时间:2012-02-27 11:38:05

标签: asp.net vb.net user-controls placeholder dynamic-controls

我有一个用户控件,它返回一个数据表,在某些情况下需要循环,一个显示在另一个之上。

我可以通过在页面中放置一个固定的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 个答案:

答案 0 :(得分:1)

你是否尝试过这个:

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

答案 1 :(得分:1)

我建议为每个表格生成不同的ID。例如,

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等)中会更有意义。

答案 2 :(得分: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)