如何解决动态添加到中继器的控件在嵌套时不会引发回发事件
在 asp:Repeater 中动态添加 asp:Button 时,我看到了一个我似乎无法解决的奇怪行为。
如果我将 Button 添加到面板 uiHolder
并注册 Click 事件,它会在 PostBack 上工作。但是,如果我将按钮添加到嵌套面板 uinestedHolder
中,则不会触发该事件。
我在这里遗漏了一些基本的东西吗?
<asp:Repeater ID="uiRepeater" OnItemCreated="uiRepeater_ItemCreated" runat="server">
<ItemTemplate>
<asp:Panel ID="uiHolder" style="background-color: red;" runat="server">
<asp:Panel ID="uinestedHolder" style="background-color: green;" runat="server">
</asp:Panel>
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender,EventArgs e)
{
if (!IsPostBack)
{
uiRepeater.DataSource = new[] { 1 };
uiRepeater.DataBind();
}
}
protected void uiRepeater_ItemCreated(object sender,RepeaterItemEventArgs e)
{
var holder = (Panel)e.Item.FindControl("uiHolder"); // Click event fires on postback
holder = (Panel)e.Item.FindControl("uinestedHolder"); // Click event does not fire on postback
var xx = new System.Web.UI.WebControls.Button();
xx.ID = "uiButton";
holder.Controls.Add(xx);
xx.Text = "DYNAMIC " + xx.ClientID;
xx.Click += uiClickMe_Click;
}
protected void uiClickMe_Click(object sender,EventArgs e)
{
Response.Write("I FIRED");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。