Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向ASP.net表中添加和维护表行和单元格_C#_Asp.net_Viewstate_Asp.net 4.0 - Fatal编程技术网

C# 向ASP.net表中添加和维护表行和单元格

C# 向ASP.net表中添加和维护表行和单元格,c#,asp.net,viewstate,asp.net-4.0,C#,Asp.net,Viewstate,Asp.net 4.0,我有一个ASP.net表,在运行时动态地向其中添加表、行和单元格,并向这些单元格添加控件(文本框和标签)。我在OnInit活动中创建并填充这些控件,希望它们能自动保存到view sate中。但事实并非如此!每次回发时,表都会重置并显示为空 我读过很多解决方案,比如将控件保存在缓存或会话中,或者手动将它们添加到视图状态,并手动将它们的值保存到视图状态,但我想要一个简单的解决方案。就像当你拖放任何asp.net组件时,你忘记了维护它的状态 谢谢您每次都必须重建表。尝试在页面加载事件上创建行和单元格。

我有一个ASP.net表,在运行时动态地向其中添加表、行和单元格,并向这些单元格添加控件(文本框和标签)。我在OnInit活动中创建并填充这些控件,希望它们能自动保存到view sate中。但事实并非如此!每次回发时,表都会重置并显示为空

我读过很多解决方案,比如将控件保存在缓存或会话中,或者手动将它们添加到视图状态,并手动将它们的值保存到视图状态,但我想要一个简单的解决方案。就像当你拖放任何asp.net组件时,你忘记了维护它的状态


谢谢

您每次都必须重建表。尝试在页面加载事件上创建行和单元格。我假设您有一个asp:table服务器端控件,如:

<asp:Table ID="table" runat="server" />

如果行得通,你能试试吗

正如tranceporter所建议的,您每次都必须添加表控件。但是,如果希望在回发之间保持viewstate,则需要在PreInit事件中重新生成表,例如

protected void Page_PreInit(object sender, EventArgs e)
{
    TableRow row = new TableRow();
    TableCell cell = new TableCell();
    cell.Controls.Add(new TextBox());
    row.Cells.Add(cell);
    table.Rows.Add(row);
}
如果控件是在PreInit事件中创建的,则ASP.NET framework将在触发页面初始化和加载事件之前为您将viewstate应用于控件。有关ASP.NET页面生命周期的更多详细信息,请参见此处:


您必须使用.NET表格和文本框吗?也许你可以添加html-form-controls。什么会导致回发?点击按钮?我感觉到了你的痛苦,愚蠢的网络表单?!MVC是我未来的朋友。。。
protected void Page_PreInit(object sender, EventArgs e)
{
    TableRow row = new TableRow();
    TableCell cell = new TableCell();
    cell.Controls.Add(new TextBox());
    row.Cells.Add(cell);
    table.Rows.Add(row);
}