1

我在我的 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 不应该将所有内容保持在视图状态吗?请帮助并提供解决方案。我完全糊涂了。

顺便说一句,ASPX 看起来像这样:

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

1 回答 1

1

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

更好的方法是使用GridView控件(在工具箱的“数据”部分中)。与 不同asp:Tableasp:GridView的视图状态包括您可能添加的任何行。

于 2011-06-01T09:23:51.060 回答