c#动态创建按钮不触发click事件

时间:2018-06-03 19:19:29

标签: c# asp.net .net

我在我的webform中添加了一个asp.net表。使用foreach语句在表中动态添加表行和单元格。 每行的最后一个单元格中都有一个按钮。随着按钮,我创建了一个点击事件。

当我点击按钮时,我想将页面发送到“Default.aspx”表单。

但是当我运行应用程序时,单击按钮只会刷新页面。

以下是代码:

    int i = 1;
    Button btn;
    foreach (SP_GetEmpAgenda a in agenda)
    {
        TableRow r = new TableRow();
        AgendaTable.Rows.Add(r);

        TableCell present = new TableCell();
        present.Text = a.Arrived.ToString();
        AgendaTable.Rows[i].Cells.Add(present);


        TableCell buttonCell = new TableCell();
        buttonCell.Width = 200;
        buttonCell.Height = 50;

        btn = new Button();
        btn.Text = "Check-In";
        btn.CssClass = "btn btn-outline-dark";
        btn.Click += (s, e) => { Response.Redirect("Default.aspx"); };

        buttonCell.Controls.Add(btn);

        AgendaTable.Rows[i].Cells.Add(buttonCell);

        i++;
    }

点击事件没有响应它只刷新页面。但是当我在Page_Load事件中创建一个通常在此方法之外的单个按钮时,该按钮正常工作。

如何使用我动态创建的按钮做到这一点?

2 个答案:

答案 0 :(得分:0)

尝试动态创建按钮时添加IDrunat = "server"属性。

 btn = new Button();
 btn.ID = "NewBtn";
 btn.Text = "Check-In";
 btn.CssClass = "btn btn-outline-dark";
 btn.Attributes.Add("runat", "server");
 btn.Click += new EventHandler(NewBtn_Click);

还要单独添加按钮点击事件,然后将Response.Redirect()代码移到它上面。

protected void NewBtn_Click(object sender, EventHandler e)
{
  Response.Redirect("Default.aspx");
}  

OR

如果仍然无法添加UseSubmitBehavior="false"作为按钮属性,它将执行ASP.NET回发而不是客户端的浏览器提交请求。

答案 1 :(得分:0)

正如您所提到的,应该在page_load中创建动态添加控件,以便它们的视图状态也将保持不变。如果你创建!IsPostBack那么也会有问题。所以在page_load中创建没有任何if条件