我有一个ASP.net表,我在运行时动态地向其中添加表行和单元格,还向这些单元格添加控件(文本框和标签)。我正在OnInit事件中创建并填充这些控件,希望它们将自动保存到视图状态。但他们不是!在每个回发中,表格被重置并显示为空。
我读了许多解决方案,比如将控件保存在Cache或Session中,或者手动将它们添加到view sate并手动将它们的值保存到view状态,但我想要一个直接的解决方案。就像你拖动任何asp.net组件一样,你忘了保持它的状态。
由于
答案 0 :(得分:1)
每次都必须重建你的桌子。尝试在Page_Load事件上创建行和单元格。我假设您有一个asp:table服务器端控件,如:
<asp:Table ID="table" runat="server" />
在这种情况下,您可以在Page_Load上为其添加控件,并将值设置为:
protected void Page_Load(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);
}
你能尝试一下吗?
答案 1 :(得分:0)
正如tranceporter建议的那样,每次都必须添加表控件。但是,如果要在回发之间维护视图状态,则需要在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框架将在页面Init和Load事件触发之前将视图状态应用于控件。有关ASP.NET页面生命周期的更多详细信息,请参见此处:
http://msdn.microsoft.com/en-us/library/ms178472(v=VS.100).aspx