在循环中创建控件

时间:2008-10-08 12:43:19

标签: c# asp.net .net-2.0

我有一些代码可以将新单元格添加到表格中,并用文本框填充它们。

到目前为止,我编码的方式很好:

        TableCell tCell1 = new TableCell();
        TableCell tCell2 = new TableCell();
        TableCell tCell3 = new TableCell();
        TableCell tCell4 = new TableCell();
        TableCell tCell5 = new TableCell();
        TableCell tCell6 = new TableCell();
        TableCell tCell7 = new TableCell();

        TextBox txt1 = new TextBox();
        TextBox txt2 = new TextBox();
        TextBox txt3 = new TextBox();
        TextBox txt4 = new TextBox();
        TextBox txt5 = new TextBox();
        TextBox txt6 = new TextBox();
        TextBox txt7 = new TextBox();

        tCell1.Controls.Add(txt1);
        tCell2.Controls.Add(txt2);
        tCell3.Controls.Add(txt3);
        tCell4.Controls.Add(txt4);
        tCell5.Controls.Add(txt5);
        tCell6.Controls.Add(txt6);
        tCell7.Controls.Add(txt7);

        tRow.Cells.Add(tCell1);
        tRow.Cells.Add(tCell2);
        tRow.Cells.Add(tCell3);
        tRow.Cells.Add(tCell4);
        tRow.Cells.Add(tCell5);
        tRow.Cells.Add(tCell6);
        tRow.Cells.Add(tCell7);

正如您所看到的,基本上有4条指令重复7次。我确信必须有一种方法来实现这一点,在FOR循环中只有4行代码并且动态分配所有名称但我似乎无法找到任何可以指向我的方向做到这一点。

以下是我所追求的:

    for (int i = 0; i < 6; i++)
    {

        TableCell tCell[i] = new TableCell();
        TextBox txt[i] = new TextBox();
        tCell[i].Controls.Add(txt[i]);
        tRow.Cells.Add(tCell[i]);

    } 

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

我认为应该这样做:

    for (int i = 0; i < 7; i++)
    {

        TableCell tCell = new TableCell();
        TextBox txt = new TextBox();
        tCell.Controls.Add(txt);
        tRow.Cells.Add(tCell);

    }

确保将6更改为7。

答案 1 :(得分:0)

这应该可以正常工作吗?

for (int i = 0; i < 6; i++)
{
    TableCell tCell = new TableCell();
    TextBox txt = new TextBox();
    tCell.Controls.Add(txt);
    tRow.Cells.Add(tCell);
}

虽然我没有真正得到你需要的名字 您是否计划使用“txt5”名称作为该特定文本框的参考? 为什么不使用tRow.Cells[4].Controls[0] As TextBox

答案 2 :(得分:0)

你写的内容实际上看起来非常接近我。不过要记住几点。

我不相信你需要数组索引。只要在循环外部初始化tRow,它就会每次添加新元素。您还可能需要设置每个文本框的ID属性,以便您可以访问您可能正在寻找的任何特定文本。

答案 3 :(得分:0)

感谢所有有用的答案。对于那些询问我在使用数组做什么的问题,我不是!这只是我想要实现的一个例子。

Ian和Lars得到了正确的想法,因为我需要稍后参考这些文本框,所以我只需要使用Eugene和Lubos的解决方案,并确保我添加一行将为他们提供顺序ID( txt1,txt2等)这样我就可以做到这一点。

再次感谢所有精彩(快速!)的输入,我现在爱上了这个网站!