【问题标题】:button OnClick event doesn't fire at the first time in UpdatePanel按钮 OnClick 事件不会在 UpdatePanel 中第一次触发
【发布时间】:2013-10-10 13:54:01
【问题描述】:

我在按钮 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;

【问题讨论】:

  • if (OnFormSubmit != null) OnFormSubmit(this, e);

标签: c# asp.net


【解决方案1】:

不确定页面和源代码到底是什么。

但是从前端来说,以 jQuery 为例。

你可以试试这样的:

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

【讨论】:

    【解决方案2】:

    您还必须将按钮放在更新面板中。

    <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>
    

    【讨论】:

    • 感谢您的回复。但该按钮是从用户控件自动生成的。不能以静态方式将其放入更新面板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多