嵌套控件的事件在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; 
    } 

任何想法?

+0

您应该将btnAdd点击处理程序公开为代理,并在您使用它的页面中订阅它。 – RPM1984 2010-09-27 01:17:52

很长一段时间了,但也许有人会觉得它有用。问题是当我点击btnAdd时,它导致回发,并且在它能够触发btnAdd_Click之前,用户控件已经被销毁。

此问题的解决方案是在回发时重新创建usercontrol。

+0

过了一段时间,因为这是张贴,但它帮助我! – 2016-08-01 17:53:21

+0

很高兴听到迈克;) – Davita 2016-08-01 17:56:46