Updatepanel中用户控件内的按钮的回发触发器

时间:2012-05-14 04:21:13

标签: c# asp.net updatepanel postback ajaxcontroltoolkit

我在更新面板中放置了一个用户控件,就像这样。

<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中,因此我在运行时遇到错误。

有没有办法为这个按钮做回发。

3 个答案:

答案 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)