簡體   English   中英

添加EventHandler以動態添加控件

[英]Adding EventHandler for dynamically added control

我在向Panel添加一些控件時遇到了問題(它通過ModalPopupExtender獲得“ PopUpped”)並添加了CheckedChanged -EventHandler。

首先,當用戶單擊按鈕時,這會在CreatePanelChoose()函數內部發生:

foreach (ListItem item in lbSupplier.Items)
{
    string cbid = "cb" + i;
    CheckBox cb = new CheckBox();
    cb.ID = cbid;
    cb.Text = item.Text;
    cb.AutoPostBack = true;

    AjaxControlToolkit.MutuallyExclusiveCheckBoxExtender mecbe = new AjaxControlToolkit.MutuallyExclusiveCheckBoxExtender();
    mecbe.ID = "mecbe" + cbid;
    mecbe.TargetControlID = cbid;
    mecbe.Key = "SupplierKEY";
    mecbe.BehaviorID = mecbe.ID + i;

    //Also adding a Label                             

    phModalPopupExtender.Controls.Add(new LiteralControl("</br>")); //phModalPopupExtender is a PlaceHolder
    phModalPopupExtender.Controls.Add(cb);
    phModalPopupExtender.Controls.Add(mecbe);
    phModalPopupExtender.Controls.Add(lbl);

    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
    trigger.ControlID = cbid;
    trigger.EventName = "CheckedChanged";
    UpdatePanelMatrix.Triggers.Add(trigger);

    i++;
    ButtonOK.Enabled = false;

}
lblText.Text = "Select one Supplier";
ModalPopupExtender1.Show();

然后我在Page_LoadComplete添加EventHandler

Page_LOadComplete-Code

如您所見,它也已分配給控件(我認為)。 ModalPopup可以正確顯示,但是如果我單擊CheckBox ,則它將直接關閉而無需進入cb_CheckedChanged ,但是它將進行異步回發...如果我檢查Request.Form["__ASYNCPOST"]其為true和Request.Form["__EVENTTARGET"]也正確。 (它給我唯一的ID!)

Request.Form["__EVENTARGUMENT"]為空。

我想我也需要說我使用母版頁。

問題不應該是頁面的生命周期,因為msdn表示:

加載完成

在事件處理階段結束時提出。

將此事件用於需要加載頁面上所有其他控件的任務。

它唯一的地方使我認為這是正確的。 順便說一句:是的,我已經看過這里的話題了,但是沒有什么幫助我……(谷歌確信也是)

編輯1:

if (IsPostBack)
{
     if (recreating == true)
     {
          CreatePanelChoose();
     }
}

CreatePanelChoose每次回發時我都立即執行foreach 但是它仍然不會觸發cb_ChangedChecked ...

編輯2:

MSDN-Page-Lifecycle還說:

預初始化

在開始階段完成之后且初始化階段開始之前引發。

將此事件用於以下用途:

創建或重新創建動態控件。

因此,我嘗試在那里重新創建面板。 但是我沒有那里的ListItems來獲取值...?!

好吧,放棄……如果有人仍然有答案,那就太好了!

現在,我不再使用CheckBoxesOnCheckedChanged了。 我只是讓他們選擇一個CheckBox然后在ButtonOkOnClick上循環遍歷CheckBoxes並檢查選擇了哪個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM