C# 动态按钮不触发点击事件
C# Dynamic button not firing click event
当我点击按钮时,它会重新加载页面为空。如何在单击按钮时触发单击事件?我认为 Page.IsPostBack 是它重新加载页面为空而不是显示标签的原因。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
account account = new account();
accountManager accountManager = new accountManager();
group group = new group();
groupManager groupManager = new groupManager();
string emailAddress;
emailAddress = HttpContext.Current.User.Identity.Name;
account = accountManager.getAccInfoByEmailAddress(emailAddress);
group = groupManager.getGroupLeader(account.groupNo);
if (account.groupNo == 0)
{
divMessage.InnerHtml = "You are not in any group.";
}
else
{
try
{
Button btn = new Button();
btn.Text = "Click";
btn.Click += new EventHandler(button_Click);
form1.Controls.Add(btn);
}
catch (Exception)
{
divMessage.InnerHtml = "Unable to retrieve data. Please contact administrator if the problem persists.";
}
}
}
}
.
private void button_Click(object sender, EventArgs e)
{
Label Label1 = new Label();
Label1.Text = "rthfg";
form1.Controls.Add(Label1);
}
当您单击按钮或以其他方式生成回发时,ASP.NET 会创建页面(一如既往)并尝试找到请求的来源,即您单击的按钮。在你的情况下,这个按钮不再在页面上,所以 ASP.NET 找不到任何东西,结束不会触发事件。
在您的情况下,解决方案似乎很简单 - 无论回发如何,始终创建按钮并将其放在页面上即可:
if (!Page.IsPostBack)
{
...
}
Button btn = new Button();
btn.Text = "Click";
btn.Click += new EventHandler(button_Click);
form1.Controls.Add(btn);
顺便说一句,为什么要使按钮动态化?动态控件总是更难管理。
当我点击按钮时,它会重新加载页面为空。如何在单击按钮时触发单击事件?我认为 Page.IsPostBack 是它重新加载页面为空而不是显示标签的原因。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
account account = new account();
accountManager accountManager = new accountManager();
group group = new group();
groupManager groupManager = new groupManager();
string emailAddress;
emailAddress = HttpContext.Current.User.Identity.Name;
account = accountManager.getAccInfoByEmailAddress(emailAddress);
group = groupManager.getGroupLeader(account.groupNo);
if (account.groupNo == 0)
{
divMessage.InnerHtml = "You are not in any group.";
}
else
{
try
{
Button btn = new Button();
btn.Text = "Click";
btn.Click += new EventHandler(button_Click);
form1.Controls.Add(btn);
}
catch (Exception)
{
divMessage.InnerHtml = "Unable to retrieve data. Please contact administrator if the problem persists.";
}
}
}
}
.
private void button_Click(object sender, EventArgs e)
{
Label Label1 = new Label();
Label1.Text = "rthfg";
form1.Controls.Add(Label1);
}
当您单击按钮或以其他方式生成回发时,ASP.NET 会创建页面(一如既往)并尝试找到请求的来源,即您单击的按钮。在你的情况下,这个按钮不再在页面上,所以 ASP.NET 找不到任何东西,结束不会触发事件。
在您的情况下,解决方案似乎很简单 - 无论回发如何,始终创建按钮并将其放在页面上即可:
if (!Page.IsPostBack)
{
...
}
Button btn = new Button();
btn.Text = "Click";
btn.Click += new EventHandler(button_Click);
form1.Controls.Add(btn);
顺便说一句,为什么要使按钮动态化?动态控件总是更难管理。