【发布时间】:2011-09-06 03:02:51
【问题描述】:
我的 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>
【问题讨论】:
-
您必须最迟在 Page_Load 中在每次回发时重新创建已添加的 TableCell。在 ViewState 中保存创建的 Cells 的数量。为避免 DropDownLists 出现视图状态和事件处理问题,您还必须确保它们在每次回发时获得相同的 ID。
标签: asp.net viewstate xmltable