按钮OnClick事件不会在UpdatePanel中第一次触发

时间:2013-10-10 01:06:34

标签: c# asp.net

我在按钮OnClick事件上遇到问题。 用户控件(“标题”)中有一个刷新按钮,它将刷新占位符(“phContent”),在运行时生成一些其他用户控件。但是,在整个占位符内容加载之前,按钮OnClick事件不会触发。

Page.aspx

<ext:ContentHeader ID="header" runat="server" Visible="false" />
<asp:UpdatePanel ID="upControl" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
        <asp:PlaceHolder ID="phContent" runat="server"></asp:PlaceHolder>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="header" EventName="OnFormSubmit" />
    </Triggers>
</asp:UpdatePanel>

UserControl.ascx

<div>
    <asp:Button ID="btnRefresh" runat="server" Text="Refresh" OnClick="btnRefresh_OnClick" />
</div>

UserControl.cs

protected void btnRefresh_OnClick(object sender, EventArgs e)
{
    //some code

    OnFormSubmit(this, e);
}
public delegate void UserControlFormSubmit(object sender, EventArgs e);
public event UserControlFormSubmit OnFormSubmit;

2 个答案:

答案 0 :(得分:0)

您还必须将按钮放在updatepanel中。

<ext:ContentHeader ID="header" runat="server" Visible="false" />
<asp:UpdatePanel ID="upControl" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
        <asp:Button ID="btnRefresh" runat="server" Text="Refresh" OnClick="btnRefresh_OnClick" />
    </ContentTemplate>
</asp:UpdatePanel>

答案 1 :(得分:0)

不确定页面和源代码究竟是什么。

但是从前端开始,以jQuery为例。

您可以尝试以下内容:

jQuery(function(){
   jQuery('#btnRefresh').on('click',function(){
       //load the content by ajax
       jQuery('#phContent').load('#chart');
   });
});