繁体   English   中英

转发器中的按钮未引发事件

[英]Button in Repeater not raising event

当我使用标签Ajax控件时,在一个标签中,我有一个Repeater: <asp:Repeater runat="server" ID="rp1" onitemcommand="rp1_ItemCommand">并在受保护的void rp1_ItemCommand(object source, RepeaterCommandEventArgs e)方法,我添加了一个按钮,它是事件:

Button btn = new Button();
btn.Text = "Update";
btn.Click += new EventHandler(btn_Click);
((Repeater)source).Items[0].Controls.Add(btn);

void btn_Click(object sender, EventArgs e)
{
    Response.Redirect("http://google.com");
}

但是,当我单击更新按钮时,不会引发该事件。

回发后,必须建立您的控制树以使其与树匹配,否则,如果它无法在控制树中找到按钮,则该事件不会触发。 这可能是由于您在代码隐藏区中手动添加按钮之后发生的。 是否有任何特定原因导致您无法在模板中使用它,即:

<asp:Repeater runat="server">
       <ItemTemplate>
           <asp:Button runat="server" OnClick="btn_Click" Text="Update" Visible="false" />
       </ItemTemplate>
   </asp:Repeater>

然后,ViewState将为您处理它。

编辑 :重新阅读了您的问题:)也许您可以更改ItemCommand上按钮的可见性而不是添加按钮,因为那样它就在您的控件树中(即,如果将其添加到模板中)。 和/或,如果您只有“一个”按钮(((Repeater)source).Items[**0**].Controls.Add(btn); ),为什么不首先将它放在中继器之外

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM