我生成了一些按钮,并为它们附加了一个事件处理程序,如下所示:
Button pgs = new Button();//Create New Topic
pgs.Width = 20;
pgs.Command += obtainTopicsPerPage_Click;
pgs.CommandName = tPage.ToString();
pgs.Text = tPage.ToString();
btns.Add(tPage.ToString());
buttons.Add(pgs);
}
void obtainTopicsPerPage_Click(Object sender, CommandEventArgs e)
{
foreach (var item in tPages)
{
if (item.Key == e.CommandName)
{
foreach (var posts in item.Value)
{
posts.ExecuteAll();
}
}
}
MyButtonTable();
}
现在,当我单击按钮时,事件处理程序永远不会触发。我检查调试器,,当我单击按钮时,只有回发,,但它没有到达事件处理程序函数内部
Update:
void Page_PreInit(object sender, EventArgs e)
{
List<Button> btn=(List<Button>)ViewState["Buttons"];
foreach (var item in btn)
{
item.Width = 20;
item.Command += obtainTopicsPerPage_Click; //resigning the eventhandlers from the begining
item.CommandName = tPage.ToString();
item.Text = tPage.ToString();
}
}
动态生成按钮时经常出现这种情况。当页面回发时,页面不再有按钮,因此无法将它们绑定到事件处理程序。
最简单的解决方案是确保在每次加载页面时重新生成 Page_Init 中的所有按钮。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)