C# 为动态添加的控件添加EventHandler
我在将一些控件添加到C# 为动态添加的控件添加EventHandler,c#,asp.net,page-lifecycle,C#,Asp.net,Page Lifecycle,我在将一些控件添加到面板(由ModalPopupExtender“弹出”)和添加CheckedChanged-EventHandler时遇到问题 首先,当用户单击按钮时,这会发生在CreatePanelChoose()函数中: foreach (ListItem item in lbSupplier.Items) { string cbid = "cb" + i; CheckBox cb = new CheckBox(); cb.ID = cbid; cb.Tex
面板
(由ModalPopupExtender
“弹出”)和添加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();
在CreatePanelChoose
中,每次回发时,我都执行foreach
操作!但它仍然不会触发cb\U更改检查
编辑2:
if (IsPostBack)
{
if (recreating == true)
{
CreatePanelChoose();
}
}
MSDN页面生命周期还表示:
PreInit
在启动阶段完成后和初始化之前引发
舞台开始了
将此事件用于以下操作:
创建或重新创建动态控件
所以我试着在那里重建面板。但是我没有列表项来获取值 好吧,放弃。。。
如果有人仍然有答案,那就太好了
现在我不再使用复选框的OnCheckedChanged
-事件。
我只是让他们选中一个复选框
,然后在按钮的上单击按钮
,我循环通过复选框
,并检查选中的是哪一个。您必须在页面加载
中重新创建所有动态创建的控件(最迟)与以前相同的ID。否则不会触发事件。@TimSchmelter感谢您的回答!我现在每次都在重新创建它们,但它仍然不起作用。。。