0

以下のコードを含むシェアポイントの視覚的な Web パーツがありますが、クリック ハンドラーのコードが起動しません。コードの何が問題になっていますか?:

protected Button btApply;
protected void Page_Load(object sender, EventArgs e)
{
    ... some code ...
    btApply = new Button();
    btApply.Text = "Apply";
    btApply.CssClass += "InputControl";
    btApply.Click += new EventHandler(btApplyClick);
    this.Controls.Add(btApply);
    ... some code ...
}

protected void btApplyClick(object sender, EventArgs e)
{
    ... some code ...
}
4

1 に答える 1

1

コントロールを動的に作成する場合は、 で作成する必要がありますPage_PreInit。からの引用MCTS Self-Paced Training Kit (Exam 70-515): Web Applications Development with Microsoft .NET Framework 4、106 ページ:

Page.PreInit イベント (マスター ページを使用していない場合) または Page.Init イベント (マスター ページを使用していて、コントロールをコンテンツ ページに追加している場合) を処理することにより、実行時にフォームにコントロールを追加できます。

ページ (および Web パーツ、ユーザー コントロールなど) のライフサイクルについては、MSDN の記事「ASP.NET ページのライフ サイクルの概要」で説明されています。

また、よく似た質問Event for Dynamically created Controls in ASP.Net を参照してください。

したがって、コントロールの作成とイベントの配線を に移動するだけPage_PreInitで問題ありません。

于 2012-10-12T11:00:43.973 に答える