我在我的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事件中创建一个通常在此方法之外的单个按钮时,该按钮正常工作。
如何使用我动态创建的按钮做到这一点?
答案 0 :(得分:0)
尝试动态创建按钮时添加ID
和runat = "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条件