【发布时间】:2012-08-10 10:57:37
【问题描述】:
目前,我正在为学生宿舍做一个项目,现在我必须实现一些关于学生的搜索策略。这里我必须在用户单击 .aspx 页面中的另一个服务器按钮时动态创建一个按钮,因此我必须为新创建的按钮创建 onclick 事件处理程序。我使用的code-sn-p是:
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 上,但我的问题是我必须在单击另一个按钮时创建它,怎么可能?
【问题讨论】:
-
点击事件是否会导致页面回发?
-
不,它不会得到回发@Saint
-
@burning_LEGION,你对我的问题做了什么编辑?我找不到任何改进?
-
所以基本上你有 2 个解决你的问题的方法,你可以让它在每次点击时回发页面,这可能不是最好的用户体验,但更容易修复,或者你可以实现javascript 解决方案会更有效,但您将拥有更好的产品。你要哪个?
标签: c# asp.net visual-studio-2010 button