可以';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);
}
}
但当我执行这段代码时,它只是覆盖了原始行,表的行数不会改变。谢谢你的帮助。。。。
如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);
}
}