可以';t将重复的行添加到asp.net表控件中

本文关键字:asp 添加 net 控件 可以 | 更新日期: 2023-09-27 17:58:50

我有一个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);
            }
        }

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

可以';t将重复的行添加到asp.net表控件中

如kip所述,您正在重新编写引用。创建新行。将其添加到网格中,然后以所需的任何方式复制单元格值。类似于:

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

它会被覆盖,因为您覆盖了引用。您不进行复制,基本上row = new TableRow()什么都不做。

你应该使用CCD_ 2。

根据响应尝试进行调整:
row = myTable.Rows[1].MemberwiseClone();

所以试试这个

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