现在我有一个 ASP 表。我可以在这个表中添加行和单元格。我想做的不是单元格只显示文本,而是添加一个控件。例如一个按钮。
现在,我对如何做到这一点的第一个想法就是将<ASP:Button ...
作为.Ttext
表格单元格的属性。但我的直觉告诉我这行不通。此外,我可能无法添加处理按钮单击的功能。
有人可以帮助我指出如何实现这一目标的正确方向吗?
现在我有一个 ASP 表。我可以在这个表中添加行和单元格。我想做的不是单元格只显示文本,而是添加一个控件。例如一个按钮。
现在,我对如何做到这一点的第一个想法就是将<ASP:Button ...
作为.Ttext
表格单元格的属性。但我的直觉告诉我这行不通。此外,我可能无法添加处理按钮单击的功能。
有人可以帮助我指出如何实现这一目标的正确方向吗?
您需要将控件添加到表格单元格。只需在单元格上调用 Controls.Add 方法并添加您的控件。下面是一个简短的草图,它应该为您指明正确的方向。
Button b = new Button();
c.Controls.Add(b);
以下假设您的页面上有一个空白的 ASP:Table,其中包含一些已定义的行(仅用于显示)。
protected void Page_Init(object sender, EventArgs e)
{
foreach (TableRow row in this.Table1.Rows)
{
foreach (TableCell cell in row.Cells)
{
Button btn = new Button();
btn.Text = "Some Button";
btn.Click += new EventHandler(btn_Click);
cell.Controls.Add(btn);
}
}
}
void btn_Click(object sender, EventArgs e)
{
((Button)sender).Text = "Just Clicked";
}
问题在于您的控件的来源是什么。到目前为止,实现这一点的最有效方法是通过数据绑定,即使您的数据源只是Enumerable.Range()
函数。
如果做不到这一点,您需要创建控件的实例并将它们添加到控件所属的表格单元格集合中。您可以只使用+=
添加事件处理程序的语法。这里的技巧是创建和添加按钮的代码需要在每次回发时再次运行,并且需要在 asp.net 生命周期的 page_load 阶段之前运行。