【发布时间】:2014-09-25 11:00:42
【问题描述】:
当单击用户控件内的按钮时,它似乎没有执行其事件(按钮单击) 我只想重新加载更新面板,这个用户控件在这个按钮点击事件中产生新的效果
我像这样在更新面板内的 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”的控件。
【问题讨论】:
-
每次加载页面时都必须添加动态控件。它们不存储在视图状态中。
-
非常感谢,但问题是我的页面每次都没有加载,我有一个菜单,每次单击菜单项时,我都会使用新的用户控件刷新更新面板内的内容
标签: javascript c# jquery html asp.net