嵌套控件的事件未在UserControl中触发

时间:2010-09-26 17:11:26

标签: c# asp.net user-controls

您好 我有一个奇怪的问题。我有一个用户控件,我使用LoadControl加载dinamycally。在这个UserControl中,我有一个分配了OnClick事件的按钮,但当我点击该按钮时,事件不会被触发。

<%@ 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;
    }

任何想法?

1 个答案:

答案 0 :(得分:4)

现在很久了,但也许有人会发现它很有用。问题是,当我单击btnAdd时,它会导致回发,并且在它能够触发btnAdd_Click之前,用户控件已经被破坏。

此问题的解决方案是在回发时重新创建用户控件。