这里是我与占位符具有问题:

我有一个中继器和中继器内,我有一个项模板。现在,这个模板的格式与情侣对表,但对于这个问题,我已经把他们赶走,使事情变得更容易阅读:

<asp:Repeater ID="Repeater1" OnItemDataBound="R1_ItemDataBound" runat="server">

   <ItemTemplate>
      <asp:PlaceHolder ID="phAnswers" runat="server"></asp:PlaceHolder>               
   </ItemTemplate>
</asp:Repeater>

然后,在事件OnItemDataBound,创建新的占位符,将其绑定到现有的上(phAnswers),然而该占位符不会更新与所创建的单选按钮/ textboxs:

    Dim rdList As New RadioButtonList
    Dim newRadio As New RadioButton

 If (e.Item.ItemType = ListItemType.Item) Or _
        (e.Item.ItemType = ListItemType.AlternatingItem) Then

        Dim tempPH As PlaceHolder

        tempPH = e.Item.FindControl("phAnswers")

        For x As Integer = 0 To (t_MC.Count - 1)

                newRadio = New RadioButton

                newRadio.ID = "Answer" + x.ToString
                newRadio.Text = t_MC(x).Value
                rdList.Controls.Add(newRadio)

            Next

   tempPH.Controls.Add(rdList)

为什么phAnswers不会更新与新tempPH占位任何想法? 干杯

有帮助吗?

解决方案

OnItemDataBound可以是太晚添加控件。尝试在OnItemCreated,看看有没有什么帮助。这是一个快速测试 - 只是改变你的中继事件声明是这样的:

OnItemCreated="R1_ItemDataBound"

如果这个想法没有帮助,您可以轻松地切换回来。

编辑 - 我只是发现了一些。要填充一个单选按钮列表,你应该使用listItems中,像这样的:

ListItem item - new ListItem("your text", "your value");
rdList.Items.Add(item);

这可能是为什么你的单选按钮列表没有出现,但孤独的单选按钮的工作。

其他提示

尝试使用Panel代替PlaceHolder

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top