我在將一些控件添加到Panel
(它獲取「PopUpped」ModalPopupExtender
)並添加CheckedChanged
-EventHandler時遇到問題。添加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();
然後我添加EventHandler
在Page_LoadComplete
:
正如你所看到的,它也被賦予了控制權(我認爲)。 的ModalPopup顯示正確,但如果我點擊CheckBox
之一,那麼它只是關閉它沒有進入cb_CheckedChanged
,但它是一個異步回發... 如果我檢查Request.Form["__ASYNCPOST"]
其真實Request.Form["__EVENTTARGET"]
也是正確的。 (它給了我唯一的ID!)
Request.Form["__EVENTARGUMENT"]
是空的。
我想我也需要說我使用一個母版頁。
你能幫我找到問題嗎? 我不應該是在頁面的生命週期,因爲MSDN說:
LoadComplete
在事件處理階段結束募集。
將此事件用於需要加載頁面上所有其他控件的任務。
它最早的地方讓我覺得它是對的。 BTW:是的,我看了看槽的主題在這裏媒體鏈接,但沒有任何幫助我...(谷歌FO肯定也)
編輯1:
if (IsPostBack)
{
if (recreating == true)
{
CreatePanelChoose();
}
}
在CreatePanelChoose
我做foreach
現在每次當它的回傳!但它仍然犯規火cb_ChangedChecked
...
編輯2:
MSDN頁,生命週期也說:
PreInit
復活以後,開始階段完成並在初始化階段開始之前 。
使用此事件的以下內容:
創建或重新創建動態控件。
所以我試圖重建小組在那裏。但我沒有那裏的ListItems獲取值...?!
非常感謝, 擺脫
你必須重新** ** - 具有相同ID的像以前創建'Page_Load'所有動態創建的控件(最晚)。否則,事件不會被觸發。 –
@TimSchmelter感謝您的回答!我重新創建它們現在每次,但仍 - 它不工作... – DatRid