我的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>
答案 0 :(得分:1)
ASP.NET视图状态仅存储控件的值,而不存在控件本身。视图状态在Page_Init
和Page_Load
之间反序列化。如果您将<asp:
样式对象动态添加到网页,则必须在Page_Init
中重新创建它们,否则ASP.NET将不会处理其视图状态。
更好的方法是使用GridView
控件(在工具箱的“数据”部分中。)与asp:Table
不同,asp:GridView
的viewstate包含任何行可能已经添加。