我在更新面板中放置了一个用户控件,就像这样。
<asp:UpdatePanel ID="testupdatepnl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<uc1:TestControl ID="ctlTest" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
现在我在这个用户控件里面放了一个按钮,然后点击。我想在按钮点击上回发整个页面。 我尝试添加像这样的回发触发器
<Triggers>
<asp:PostBackTrigger ControlID="clickButton" />
</Triggers>
由于按钮在usercontrol中,因此我在运行时遇到错误。
有没有办法为这个按钮做回发。
答案 0 :(得分:15)
从HTML&amp;中删除<Triggers>
将其添加到PageLoad
事件
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(WebUserControl11.FindControl("ButtonId"));
注意:从this
了解到答案 1 :(得分:0)
因为您用作触发器的按钮位于更新面板内,并且在渲染后其客户端ID被更改。
使用户控件可以访问该按钮并在服务器端声明触发器,例如
var ClickButton= ctlTest.FindControl("clickButton") as Button;
var trigger = new PostBackTrigger();
trigger.ControlID = ClickButton.UniqueID.ToString();
testupdatepnl.Triggers.Add(trigger);
有关详细信息,请参阅以下主题 Trigger a button inside a UpdatePanel with a LoginView
答案 2 :(得分:0)
您还应该注意,如果您使用的是Ajax Control Toolkit。您可以将ScriptManager替换为ToolkitScriptManager。
Dim btn As Button = CType(UserControl.FindControl("ButtonID"), Button)
AjaxControlToolkit.ToolkitScriptManager.GetCurrent(Page).RegisterPostBackControl(btn)