我目前正在使用c#和asp.net的網站上工作。爲此,我需要創建動態控件,但是我解決了一些問題。我已經閱讀過官方文檔並且搜索了很多教程,但不幸的是,沒有人允許我解決這個問題。動態c#asp.net控件更新
這是我正在嘗試做的一個非常簡單的例子;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
CreateControls();
else
UpdatePage();
}
protected void CreateControls()
{
Button button1 = new Button();
button1.ID = "_Button1";
button1.Text = "Button1";
button1.Click += new System.EventHandler(_ClickEvent);
_Panel.Controls.Add(button1);
Button button2 = new Button();
button2.ID = "_Button2";
button2.Text = "Button2";
button2.Click += new System.EventHandler(_ClickEvent);
_Panel.Controls.Add(button2);
}
protected void UpdatePage()
{
Button button1 = ((Button)_Panel.FindControl("_Button1"));
button1.Text = "I went through UpdatePage and changed";
Button button2 = ((Button)_Panel.FindControl("_Button2"));
button1.Text = "I went through UpdatePage and changed";
}
protected void _ClickEvent(object sender, EventArgs e)
{
}
這裏的目的只是當點擊其中一個按鈕的文本時更改按鈕的文本。正確調用「Page_Load」方法以及「UpdatePage」方法,但在後者中,Button1和Button2控件已消失(它們不在面板控件中),並且明顯引發NullPointer異常。
會有人解釋嗎?我知道我可能錯過了關於頁面生命週期的一些內容,但無法在任何地方找到任何明確的解
非常感謝!
您必須在每次回發時重新創建所有動態創建的控件。 [真正理解動態控制](http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx) –
這對於一個非英語母語的人來說是一個相當困難的閱讀,但似乎真的完成了!不幸的是,我無法真正找到關於如何使用Page_Load方法來創建和更新控件的解釋。我錯過了相關段落嗎? –