c# - 单击动态创建的按钮时无法进入事件
问题描述
我正在尝试制作程序,单击按钮,输入事件但我不能,有人可以帮助我吗?
“foreach”正在工作,但它没有进入,我不知道为什么。
单击按钮时,它不会启动事件,但是当它被单击两次时,所有按钮都会消失
foreach (var Cat in db.Categorias) {
var id_Categoria = db.Categorias.Where(x => x.IdCategoria.Equals(Cat.IdCategoria)).FirstOrDefault();
if (id_Categoria != null && Cat.IdCategoria.Equals(Cat.IdCategoria)) {
UpdatePanel UP_btn_Cat = new UpdatePanel();
UP_btn_Cat.ID = "UP_btn_Cat_" + Cat.IdCategoria.ToString();
UP_btn_Cat.UpdateMode = UpdatePanelUpdateMode.Conditional;
Plh_cat.Controls.Add(UP_btn_Cat);
Button btn_cat = new Button();
btn_cat.Text = Cat.NomeCategoria;
btn_cat.ID = "btn_cat_" + Cat.IdCategoria.ToString();
btn_cat.Click += new EventHandler(button_Click);
UP_btn_Cat.ContentTemplateContainer.Controls.Add(btn_cat);
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = btn_cat.ID;
trigger.EventName = "button_Click";
UP_btn_Cat.Triggers.Add(trigger);
Plh_email.Controls.Add(new LiteralControl("<div style='clear: both'></div>"));
}
}
protected void button_Click(object sender, EventArgs e) {
Button btn_cat = (Button)sender;
PlaceHolder plh_msg_cat = new PlaceHolder();
plh_msg_cat.ID = "plh_msg_cat";
UpdatePanel UP_mgs_Cat = new UpdatePanel();
UP_mgs_Cat.ID = "UP_mgs_Cat";
UP_mgs_Cat.UpdateMode = UpdatePanelUpdateMode.Conditional;
div_msgs.Controls.Add(UP_mgs_Cat);
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = btn_cat.ID;
trigger.EventName = "Click";
UP_mgs_Cat.Triggers.Add(trigger);
var id = btn_cat.ID;
Plh_cat.Controls.Add(new LiteralControl("<p class='p_cliente'>123" + id + "</p>"));
}
解决方案
我不确定一切是如何创建的,但我建议您阅读Page Life Cycle。它指出必须在 PreInit 事件期间创建所有控件。使用 Init 初始化控件属性。
如果控件在 !IsPostBack 期间或在错误事件中仅创建一次,则不会触发按钮的 Click 事件。
推荐阅读
- google-calendar-api - 问:Google Calendar API,前景色
- javascript - 如何使用后端在 Vuetify 自动完成中创建无限滚动?
- python - Python - 在 AD 中搜索条目
- reactjs - 将 React 应用程序部署到 github 页面找不到构建文件夹
- reactjs - REACT JS POST http://localhost:4000/api/activation 401(未经授权)
- android - 是否可以更新材料设计日期选择器中的文本字段?
- google-cloud-pubsub - Include custom attributes using Spring Cloud Stream (StreamBridge)
- angular - Z-index 不在 iphone 上的 ion-card 中输入
- mathematical-optimization - CPLEX shows wrong "Objective" and "BestBound"
- html - 显示文章内联块时出现问题