从代码后面访问表

时间:2014-08-07 11:27:28

标签: c# asp.net

我有这段代码:

for(int u = 0; u < 3; u++)
{
   TableRow row = new TableRow();
   for(int i = 0; i < 3; i++)
   {
        TableCell cell = new TableCell();
        cell.ID = "test"+i;
        cell.Text = "Cell" + i + "-" +u;
        row.Cells.Add(cell);
   }

   tabAntraege.Rows.Add(row);
}

所以现在我有一个像这样的ASP.NET表:

| Cell0-0 | Cell1-0 | Cell2-0 |
| Cell0-1 | Cell1-1 | Cell2-1 |
| Cell0-2 | Cell1-2 | Cell2-2 |

现在我要更改单元格中的Text“Cell0-0”。

所以我写了这段代码:

TableRow t1 = tabAntraege.Rows[0];
TableCell t2 = t1.Cells[0];
t2.Text = "new Text"

当我尝试使用我的代码时,我收到以下错误:

  

system.argumentoutofrangeexception指定的参数超出了有效值的范围

有人有个主意吗?

来自Button事件的代码:

    protected void test(object sender, EventArgs e)
    {
        if(tabAntraege.Rows.Count != 0)
        {
            TableRow t1= tabAntraege.Rows[0];
            TableCell t2 = t1.Cells[0];
            t2.Text = "new Text";
        }
    }

2 个答案:

答案 0 :(得分:2)

我假设您已发布的内容表明您在标记中声明了该表,但在TableRow事件期间填充了TableCellLoad个实例。

每次回发时,您都必须重新创建表格中的行,以及您在表格单元格中放置的所有控件。

Page_Init处理程序中执行此操作将允许其内容和属性(例如背景颜色等)在回发中保留。

列表控件(例如DataGridDataListGridView)会自动执行此操作,如果它们是数据绑定的,但普通的Table不会。

答案 1 :(得分:0)

您的代码应该可以运行,但是您可以尝试以下方法:

tabAntraege.Rows[0].Cells[0].Text = "new Text";

如果tabAntraege首先包含行,您是否可以检入代码?