gpt4 book ai didi

c# - 为动态添加的控件添加 EventHandler

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:58 26 4
gpt4 key购买 nike

我在将一些控件添加到 Panel(通过 ModalPopupExtender 获取“PopUpped”)并添加 CheckedChanged 时遇到了问题>-事件处理器。

首先,当用户点击按钮时,这发生在 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:

Page_LOadComplete-Code

如您所见,它也被分配给控件(我认为)。ModalPopup 正确显示,但如果我单击其中一个 CheckBox,则它只是关闭它而不进入 cb_CheckedChanged,但它会进行异步回发......如果我检查 Request.Form["__ASYNCPOST"] 它是真的并且 Request.Form["__EVENTTARGET"] 也是正确的。 (它给了我唯一的 ID!)

Request.Form["__EVENTARGUMENT"] 为空。

我想我还需要说明一下,我使用的是母版页。

问题应该不是页面的生命周期,因为msdn说:

LoadComplete

Raised at the end of the event-handling stage.

Use this event for tasks that require that all other controls on the page be loaded.

这是唯一让我认为它是正确的地方。顺便说一句:是的,我已经仔细阅读了这里的主题,但没有任何帮助......(当然也谷歌)

编辑 1:

if (IsPostBack)
{
if (recreating == true)
{
CreatePanelChoose();
}
}

CreatePanelChoose 中,每次回发时我都会执行 foreach!但它仍然没有触发 cb_ChangedChecked ...

编辑 2:

MSDN-Page-Lifecycle 还说:

PreInit

Raised after the start stage is complete and before the initialization stage begins.

Use this event for the following:

Create or re-create dynamic controls.

所以我尝试在那里重新创建面板。但是我没有那里的 ListItems 来获取值......?!

最佳答案

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

现在我不再使用 OnCheckedChanged - CheckBoxes 的事件。我只是让他们选择一个 CheckBox 并在 ButtonOkOnClick 上循环遍历 CheckBoxes 并检查哪个一个被选中。

关于c# - 为动态添加的控件添加 EventHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20195311/

26 4 0