动态地将ASP控件添加到表中

时间:2012-02-01 21:56:18

标签: asp.net asp.net-controls

现在我有一个ASP表。我可以在这个表中添加行和单元格。我想做的是,而不是只显示文本的单元格,我想添加一个控件。例如一个Button。

现在,我第一次想到如何执行此操作只是将<ASP:Button ...作为表格单元格的.Ttext属性。但我的直觉告诉我这不行。此外,我可能无法添加一个函数来处理按钮单击。

有人可以帮助我指出如何实现这个目标的正确方向吗?

3 个答案:

答案 0 :(得分:5)

您需要将控件添加到表格单元格。只需在单元格上调用Controls.Add方法并添加您的控件即可。下面是一个简短的草图,应该指出你正确的方向。

        Button b = new Button();
        c.Controls.Add(b);

答案 1 :(得分:2)

以下假设您有一个空白的ASP:页面上有一些已定义的行(仅用于显示)。

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";
}

答案 2 :(得分:0)

问题依赖于控件的来源。尽管如此,即使您的数据源只是Enumerable.Range()函数,最有效的方法是data binding

如果失败,您需要创建控件的实例并将它们添加到Control所属的表单元格的集合中。您可以使用+=语法添加事件处理程序。这里的诀窍是创建和添加按钮的代码需要在每个回发上再次运行,并且需要在 asp的page_load阶段之前运行。净生命周期。