我在将一些控件添加到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();
然后我在EventHandler
中添加Page_LoadComplete
:
正如你所看到的,它也被控制了(我认为)。
ModalPopup正确显示,但如果我单击其中一个CheckBox
,那么它只是关闭它而不进入cb_CheckedChanged
,但它会进行异步回发...
如果我检查Request.Form["__ASYNCPOST"]
是真的,Request.Form["__EVENTTARGET"]
也是正确的。 (它给了我唯一的ID!)
Request.Form["__EVENTARGUMENT"]
为空。
我想我还需要说我使用的是母版页。
问题不应该是页面的生命周期,因为msdn说:
LoadComplete
在事件处理阶段结束时举起。
将此事件用于需要加载页面上所有其他控件的任务。
它是我认为最合适的地方。 顺便说一句:是的,我已经看过这里的主题了,但没有任何帮助我...(谷歌肯定也)
修改1:
if (IsPostBack)
{
if (recreating == true)
{
CreatePanelChoose();
}
}
在CreatePanelChoose
我每次回复时都会foreach
执行此操作!但它仍然没有引发cb_ChangedChecked
......
编辑2:
MSDN-Page-Lifecycle也说:
PreInit
在开始阶段完成之后和初始化之前引发 阶段开始。
将此事件用于以下事项:
创建或重新创建动态控件。
所以我试着在那里重新创建Panel。但是我没有ListItems来获取值......?!
答案 0 :(得分:0)
好的,放弃了...... 如果有人仍然有答案,那就太棒了!
现在我不再使用OnCheckedChanged
- CheckBoxes
的事件了。
我只是让他们选择CheckBox
并OnClick
ButtonOk
我循环CheckBoxes
并检查选择了哪一个。