目前,我正在为学生宿舍做一个项目,现在我必须实现一些关于学生的搜索策略。这里,当用户单击 .aspx 页面中的另一个服务器按钮时,我必须动态创建一个按钮,因此我必须创建新创建的按钮的 onclick 事件处理程序。我使用的代码片段是:
protected void btnsearchByName_Click(object sender, EventArgs e)
{
TextBox tbsearchByName = new TextBox();
Button btnsearchName = new Button();
tbsearchByName.Width = 250;
tbsearchByName.ID = "tbsearchByName";
tbsearchByName.Text = "Enter the full name of a student";
btnsearchName.ID = "btnsearchName";
btnsearchName.Text = "Search";
btnsearchName.Click += new EventHandler(this.btnsearchName_Click);
pnlsearchStudents.Controls.Add(tbsearchByName);
pnlsearchStudents.Controls.Add(btnsearchName);
}
protected void btnsearchName_Click(object sender, EventArgs e)
{
lblsearch.Text = "btnsearchName_Click event fired in " + DateTime.Now.ToString();
}
在这里,问题是新创建的 eventHandler 没有被触发。我浏览过这个网站,查看了几个问题和答案,还浏览了页面生命周期,他们都说动态按钮应该位于 Init 或 Pre_init 上,但我的问题是我必须在单击另一个按钮时创建它,怎么可能?
您需要在每次回发时为按钮添加单击处理程序。
您可以在页面加载时在搜索学生面板中查找按钮,或者尝试使用页面 OnInit() 方法在创建时添加处理程序。
另请检查此处:
动态添加的 ASP.NET 按钮单击处理程序被忽略 https://stackoverflow.com/questions/11245808/dynamically-added-asp-net-button-click-handler-being-ignored
和这里:具有事件处理程序的 asp.net 动态按钮 https://stackoverflow.com/questions/7713242/asp-net-dynamically-button-with-event-handler
和这里:asp:按钮点击事件没有被触发 https://stackoverflow.com/questions/8779040/aspbutton-click-event-not-being-fired
(所有这些都给出了类似的建议)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)