私は現在、c# と asp.net を使用して Web サイトに取り組んでいます。この目的のために、動的コントロールを作成する必要がありますが、いくつか問題があります。私はすでに公式ドキュメントを読み、多くのチュートリアルを検索しましたが、残念ながら、誰もこの問題を修正することを許可してくれませんでした.
これは、私がやろうとしていることの非常に単純化された例です。
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 例外が明らかに発生します。
誰か説明がありますか?おそらくページのライフサイクルについて何かを見逃していることはわかっていますが、明確な解決策はどこにも見つかりませんでした。
どうもありがとう !