![](/img/trans.png)
[英]Having trouble adding an eventhandler to dynamically created dropdownlist
[英]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
:
如您所見,它也已分配給控件(我認為)。 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來獲取值...?!
好吧,放棄……如果有人仍然有答案,那就太好了!
現在,我不再使用CheckBoxes
的OnCheckedChanged
了。 我只是讓他們選擇一個CheckBox
然后在ButtonOk
的OnClick
上循環遍歷CheckBoxes
並檢查選擇了哪個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.