【问题标题】:Updating placeholder during runtime在运行时更新占位符
【发布时间】:2011-01-26 09:19:56
【问题描述】:

这是我在使用占位符时遇到的问题:

我有一个中继器,在该中继器中,我有一个项目模板。现在这个模板被格式化了几个表格,但是对于这个问题,我已经删除了它们以使事情更容易阅读:

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

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

然后,在 OnItemDataBound 事件上,我创建了一个新的占位符,将其绑定到现有的 on (phAnswers),但是占位符不会使用创建的单选按钮/文本框进行更新:

    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)

任何想法为什么不使用新的 tempPH 占位符更新 phAnswers? 干杯

【问题讨论】:

  • 更新:我尝试只添加单选按钮而不是将单选按钮添加到单选按钮列表,它们显示得很好。嗯

标签: asp.net vb.net placeholder


【解决方案1】:

尝试使用Panel 而不是PlaceHolder

【讨论】:

  • 其实我已经尝试过使用面板,我得到了相同的结果
【解决方案2】:

OnItemDataBound 添​​加控件可能为时已晚。在 OnItemCreated 中尝试一下,看看是否有帮助。这是一个快速测试 - 只需像这样更改转发器事件声明:

OnItemCreated="R1_ItemDataBound"

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

编辑 - 我刚刚注意到一些事情。要填充 RadioButtonList,您应该使用 ListItems,如下所示:

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

这可能是您的 RadioButtonList 没有出现的原因,但单独的单选按钮起作用了。

【讨论】:

  • 运气不好。还有其他想法吗?
  • 是的......我认为这是愚蠢的事情。非常感谢,我很感激。
猜你喜欢
  • 2017-06-10
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 2019-04-10
  • 2013-07-14
  • 2012-09-15
相关资源
最近更新 更多