无法向asp.net Table Control添加重复行

时间:2011-06-08 08:11:32

标签: c# asp.net

我有一个像这样的asp.net表控件:

  TableHeader
A Text | Textbox

我想要做的是,在page_load事件中,复制第二行及其中的所有控件,更改第一个单元格中的文本并添加为新行。所以这是我的代码:

        for (int i = 0; i < loop1counter; i++)
        {
            TableRow row = new TableRow();
            row = myTable.Rows[1]; //Duplicate original row
            char c = (char)(66 + i);
            if (c != 'M')
            {
                row.Cells[0].Text = c.ToString();
                myTable.Rows.Add(row);
            }
        }

但是当我执行这段代码时,它会覆盖原始行,并且表的行数不会改变。谢谢你的帮助....

3 个答案:

答案 0 :(得分:2)

正如thekip所提到的,你正在重写参考文献。 创建一个新行。将其添加到网格中,然后以您想要的任何方式复制单元格值。 类似的东西:

TableRow tRow = new TableRow();
myTable.Rows.Add(tRow);
foreach (TableCell cell in myTable.Rows[1].Cells)
{
    TableCell tCell = new TableCell();
    tCell.Text = cell.Text;
    tRow.Cells.Add(tCell);
 }

答案 1 :(得分:1)

它会被覆盖,因为您覆盖了引用。你没有副本,基本上row = new TableRow()什么也没做。

你应该使用 myTable.ImportRow(myTable.Rows[1])

根据回复调整尝试:
row = myTable.Rows[1].MemberwiseClone();

答案 2 :(得分:0)

所以试试这个

private TableRow CopyTableRow(TableRow row)
{

    TableRow newRow = new TableRow();
    foreach (TableCell cell in row.Cells)
    {
        TableCell tempCell = new TableCell();
        foreach (Control ctrl in cell.Controls)
        {
            tempCell.Controls.Add(ctrl);
        }
        tempCell.Text = cell.Text;
        newRow.Cells.Add(tempCell);
    }
    return newRow;
}

您的代码:

for (int i = 0; i < loop1counter; i++)
    {
        TableRow row = CopyTableRow(myTable.Rows[1]); //Duplicate original row
        char c = (char)(66 + i);
        if (c != 'M')
        {
            row.Cells[0].Text = c.ToString();
            myTable.Rows.Add(row);
        }
    }