嵌套控件的事件在UserControl中未触发
问题描述:
你好 我有一个奇怪的问题。我有一个用LoadControl控制的用户控件。在这个UserControl中,我有一个指定了OnClick事件的按钮,但是当我单击该按钮时,事件不会被触发。嵌套控件的事件在UserControl中未触发
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ServiceInput.ascx.cs"
Inherits="uPay.UserControls.ServiceInputs.ServiceInput" ViewStateMode="Disabled" %>
<div class="PopupFoot">
<asp:Button ID="btnAdd" CssClass="PopupADD" runat="server" OnClick="btnAdd_Click" />
</div>
protected void btnAdd_Click(object sender, EventArgs e)
{
//Method never gets called :/
}
这里我加载用户控件的页面
protected void ServicesUpdatePanel_Load(object sender, EventArgs e)
{
string arg = Request.Params.Get("__EVENTARGUMENT");
if (arg == "ServiceInput")
{
int serviceId;
if (Int32.TryParse(hdnSelectedService.Value, out serviceId))
{
using (Entities db = new Entities())
{
LocalizedServiceRecord service = db.ServiceRecords.OfType<LocalizedServiceRecord>().FirstOrDefault(s => s.Id == serviceId && s.Language.Id == CurrentLanguage.Id);
lblPopupTitle.Text = service.Name;
ServiceInputBase serviceInput = LoadInputControl(service);
InputServicePlaceHolder.Controls.Add(serviceInput);
ServicesUpdatePanel.Update();
}
}
}
}
private ServiceInputBase LoadInputControl(ServiceRecord service)
{
ServiceInputBase serviceInput = LoadControl("~/UserControls/ServiceInputs/ServiceInput.ascx") as ServiceInputBase;
return serviceInput;
}
任何想法?
答
很长一段时间了,但也许有人会觉得它有用。问题是当我点击btnAdd
时,它导致回发,并且在它能够触发btnAdd_Click
之前,用户控件已经被销毁。
此问题的解决方案是在回发时重新创建usercontrol。
+0
过了一段时间,因为这是张贴,但它帮助我! – 2016-08-01 17:53:21
+0
很高兴听到迈克;) – Davita 2016-08-01 17:56:46
您应该将btnAdd点击处理程序公开为代理,并在您使用它的页面中订阅它。 – RPM1984 2010-09-27 01:17:52