添加EventHandler以动态添加控件

时间:2013-11-25 14:15:49

标签: c# asp.net page-lifecycle

我在将一些控件添加到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

Page_LOadComplete-Code

正如你所看到的,它也被控制了(我认为)。 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来获取值......?!

1 个答案:

答案 0 :(得分:0)

好的,放弃了...... 如果有人仍然有答案,那就太棒了!

现在我不再使用OnCheckedChanged - CheckBoxes的事件了。 我只是让他们选择CheckBoxOnClick ButtonOk我循环CheckBoxes并检查选择了哪一个。