我有一個用戶控件「UserApplianceControl」,我需要動態添加到一個asp頁面。ASP用戶控件事件在包含頁面的OnLoadComplete後觸發
我用下面的代碼這樣做:
User.aspx.cs
protected override void OnLoadComplete(EventArgs e)
{
base.OnLoadComplete(e);
A5Lib.User u;
UserServiceReference.UserServicesClient myProxy = new UserServiceReference.UserServicesClient();
u = myProxy.GetUser("user1");
if (listOfAppliances != null)
{
foreach (A5Lib.Appliance str in u.Appliances)
{
UserApplianceControl uac = (UserApplianceControl)LoadControl("UserApplianceControl.ascx");
uac.setAppliance(str);
Panel1.Controls.Add(uac);
}
}
}
在UserApplianceControl,我有幾個按鈕。但是,無論何時按下按鈕,用戶控件的按鈕處理程序都不會被調用。事實上OnLoadComplete(上面)被首先調用,所以這些控件在最後一頁加載時被重新創建,並且在我可以處理該事件之前丟失了舊的控件。
爲什麼不在OnLoadComplete之前觸發事件?
我打賭我的左鞋在父頁的Page_Load上發生了一些事情,這些事件正在清除Button_Click事件處理程序。你對頁面生命週期的熟悉程度如何? http://msdn.microsoft.com/en-us/library/ms178472.aspx當這類問題出現時,有90%的時間是因爲開發人員沒有考慮Page Lifecycle,或者誤解了事件發生順序。當然,我可能是錯的,但那將是我看起來的第一個地方。 – David 2012-04-20 20:30:45
我在Page_Load中沒有做任何事......即它的空 – 2012-04-20 20:32:03