在此用户控件内单击按钮后,更新面板内的动态用户控件消失

时间:2014-09-25 11:00:42

标签: javascript c# jquery html asp.net

单击用户控件内的按钮时,似乎没有执行其事件(按钮单击) 我只想重新加载更新面板,此用户控件在此按钮单击事件中获取新效果

我在更新面板中的html控件上添加了用户控件,如下所示

<!-- language: c# -->
content.Controls.Remove(content.FindControl("currentusercontrol"));
    UserControl usr1 = (UserControl)LoadControl("myusercontrol.ascx");
    usr1.ID = "currentusercontrol";
   content.Controls.Add(usr1);

这是我的父页面内容

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="True"> </asp:ScriptManager>
 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" OnLoad="UpdatePanel1_Load" OnPreRender="UpdatePanel1_PreRender">

        <ContentTemplate>

    <div id="content" class="content" runat="server">
        <!-- begin breadcrumb -->

        <!-- end breadcrumb -->
        <!-- begin page-header -->
        <h1 class="page-header" runat="server" id="pageheader">Dashboard v2 <small id="smallheader" runat="server">header small text goes here...</small></h1>
        <!-- end page-header -->

    </div>
            </ContentTemplate>
        <Triggers>           
        </Triggers>           
    </asp:UpdatePanel>

这是我的用户控制页面

<%@ Control Language="C#" ClassName="Contact_Us" %>
<%@ Import Namespace="System.Threading" %>
<script runat="server">
private void Button1_OnClick(object sender, EventArgs e)
{
    Thread.Sleep(5000);
    Label1.Text = "lion";
}
</script>

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server" ></asp:ScriptManagerProxy>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button1" runat="server" CssClass="btn btn-primary" Text="Submit" OnClick="Button1_OnClick"  />

我试试这个,但它不起作用

<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />

我试图将触发器直接放到更新面板但是我有错误,因为按钮处于用户控制状态,因此我无法控制此ID,因此我尝试将触发器以编程方式放在用户控件加载事件上 喜欢这个

    UpdatePanel UpdatePanel1 = this.Parent.FindControl("UpdatePanel1") as UpdatePanel;
    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
    trigger.ControlID = Button1.ID;
    trigger.EventName = "Click";
    UpdatePanel1.Triggers.Add(trigger);

但我有同样的错误 UpdatePanel'UpdatePanel1'中的触发器无法找到ID为“Button1”的控件。

然后就像这样使用button1的客户端ID

trigger.ControlID = Button1.ClientID;
同样的问题 在UpdatePanel'UpdatePanel1'中找不到ID为'currentusercontrol_Button1'的控件。

2 个答案:

答案 0 :(得分:0)

在按钮单击时修改更新面板中的内容(通过asp标签ID&#39; s),然后调用UpdatePanel1.Update();

http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.update(v=vs.110).aspx

答案 1 :(得分:0)

我发现它只是把这个代码放在updatepanel加载中,一切都很顺利

        content.Controls.Remove(content.FindControl("currentusercontrol"));
        UserControl usr1 = (UserControl)LoadControl("myusercontrol");
        usr1.ID = "currentusercontrol";
        content.Controls.Add(usr1);