【问题标题】:Adding click event dynamically is not working动态添加点击事件不起作用
【发布时间】:2019-02-11 01:25:30
【问题描述】:

这里是第一次提问。

我在 VS2017 中有如下 CSharp 代码 - 它仅放置在动态表的第一行中:

 if(intN == 1)
 {
    tc = new TableCell();
    tc.CssClass = "FNT_14_Bold";
    btn = new Button();
    btn.ID = "btnSubmitCurrentUserChanges";
    btn.Height = 25;
    btn.Width = 261;
    btn.Text = "Submit Current Users Changes";
    btn.BackColor = ColorTranslator.FromHtml("#006F6F");
    btn.ForeColor = Color.White;
    btn.Click += new EventHandler(btnUsers_Click);
    tc.Controls.Add(btn);
}
else
{
    tc = new TableCell();
    tc.VerticalAlign = VerticalAlign.Top;
    tc.HorizontalAlign = HorizontalAlign.Center;
    tc.CssClass = "FNT_14";
}

protected void btnUsers_Click(object sender, EventArgs e)
{
    SubmitData();
}

当我单击该按钮时,它会触发,但仅限于 Page_Load。关于将它带到实际活动中的任何建议?

提前致谢... StackOverflow 帮了大忙。

【问题讨论】:

    标签: c# button dynamic onclick


    【解决方案1】:

    我假设您的代码的第一部分来自Page_Load。您需要将其移至Page_Init。这样,动态创建的控件就可以在页面加载时触发事件。

    【讨论】:

    • 谢谢。抱歉,我没有更全面地解释这一点——我的代码的第一部分是在一个创建和填充动态表的过程中。该按钮在该过程中创建,仅出现一次 - 在第一行。我可以在 Page_Init 中创建一个按钮,然后在动态创建的表中引用它吗?
    • 是的,这应该是可能的。您应该在每个 Page_Init 上创建,无论是在您生成 html 时还是在您希望 clickhandler 执行时(只需在回发时将其“Vivible”属性设置为 false)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多