我有这段代码:
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";
}
}
答案 0 :(得分:2)
我假设您已发布的内容表明您在标记中声明了该表,但在TableRow
事件期间填充了TableCell
和Load
个实例。
每次回发时,您都必须重新创建表格中的行,以及您在表格单元格中放置的所有控件。
在Page_Init
处理程序中执行此操作将允许其内容和属性(例如背景颜色等)在回发中保留。
列表控件(例如DataGrid
,DataList
和GridView
)会自动执行此操作,如果它们是数据绑定的,但普通的Table
不会。
答案 1 :(得分:0)
您的代码应该可以运行,但是您可以尝试以下方法:
tabAntraege.Rows[0].Cells[0].Text = "new Text";
如果tabAntraege
首先包含行,您是否可以检入代码?