动态添加列到ASP.NET表 - 回发

时间:2011-06-01 09:11:05

标签: asp.net viewstate xmltable

我的aspx页面上有一个asp.net表控件,包含 asp.net TableRow对象;

我的目的是通过单击某个图像按钮动态地将列添加到此表。 该表由几个TableRow对象组成,每个对象默认包含带有一些标签的ASP.NET TableCell。我试图通过单击图像按钮添加列,据说将新单元格添加到行的单元格集合。例如,如果我想添加一个包含特定行的下拉列表的列,我会这样做:

DropDownList ddl = new DropDownList();
            TableCell tableCell= new TableCell();
            tableCell.Controls.Add(ddl);
            tableRow.Cells.Add(tableCell);

问题在于我永远不会超越一个添加的列,因为每当我点击我创建的asp.net“AddColumn”按钮之前,我会在生活中的某个地方找到它的处理程序 循环TableRow对象,以及它的单元集合。 我想过以某种方式在会话中保存行对象的副本,但我想不到 保存的正确时间点。

无论如何 - 是不是asp.net应该将所有内容保存在viewstate中?请帮助并提供解决方案。我完全糊涂了。

ASPX btw看起来像这样:

<asp:TableRow runat="server" ID="RequestorEmailRow">
                        <asp:TableCell runat="server" Text="...">
                        </asp:TableCell>
                    </asp:TableRow>

1 个答案:

答案 0 :(得分:1)

ASP.NET视图状态仅存储控件的值,而不存在控件本身。视图状态在Page_InitPage_Load之间反序列化。如果您将<asp:样式对象动态添加到网页,则必须在Page_Init中重新创建它们,否则ASP.NET将不会处理其视图状态。

更好的方法是使用GridView控件(在工具箱的“数据”部分中。)与asp:Table不同,asp:GridView的viewstate包含任何行可能已经添加。