Ann*_*a T 1 c# asp.net visual-studio-2008
单击任何按钮后,为什么我的按钮(按钮数组)会消失?这是代码结构.非常感谢提前.
public partial class Seatalloc2 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateControls();
}
}
protected void PopulateControls()
{
Button[,] buttonArray = new Button[10, 14];
for (int a = 0; a < 10; a++)
for (int b = 0; b < 14; b++)
{
buttonArray[a, b] = new Button();
Panel2.Controls.Add(buttonArray[a, b]);
}
}
public void buttonHandler(object sender, EventArgs e)
{
Button btn = sender as Button;
btn.BackColor = Color.Red;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您查看我对上一个问题的答案,您将找到解决此问题的示例:
根本问题是理解ASP.Net页面生命周期(我讨厌它)但是理解它背后的基础是有用的和关键的
Microsoft的此文档详细说明了页面生命周期
http://msdn.microsoft.com/en-us/library/ms178472.aspx
基本上控件正在消失,因为您需要在每次回发的页面中重新创建它们,并且在您的代码中,您只是在第一次加载页面时创建它们
PreInit如果您没有母版页,或者Init如果您有一个母版页,则建议创建动态控件的事件是
因此,如果您将代码更改为:
void Page_Init(object sender, EventArgs e)
{
PopulateControls();
}
Run Code Online (Sandbox Code Playgroud)
您的按钮将保存其状态.不要担心状态,即使它们在每个帖子中重新创建,因为你在Init事件中这样做,ASP.Net会ViewState自动加载到你的控件(这是可能的,因为ASP.Net加载后的视图状态该Init事件与之前Load事件)
作为快速参考,请查看页面生命周期:

| 归档时间: |
|
| 查看次数: |
2852 次 |
| 最近记录: |