当我使用选项卡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");
}
但是,当我点击更新按钮时,不会引发事件。
答案 0 :(得分:0)
回发后,必须构建控制树以匹配树,否则如果无法在控制树中找到该按钮,则不会触发事件。这可能是因为您在代码隐藏中手动添加按钮所发生的情况。是否有任何特殊原因导致您无法在模板中使用它,即:
<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);
),为什么不首先在外面转发器?