独自のカスタム コントロールを作成する場合は、すべてのコントロールを OnInit に追加する必要があります。そうしないと、ポストバックが機能しません。ProcessPostData は Init() と Load() の間で呼び出されるため、Load() にコントロールを追加すると、コントロールがページに表示される前にデータの送信ステップが既に完了しています。
ただし、ASP.NET リピーターにボタンを配置し、Page_Load() でリピーターにデータをバインドするだけの場合、Init 中にコントロールがページ上になかった場合でも、リピーターは ItemCommand イベントをトリガーします。これはどのように作動しますか?Load() または PreRender() でコントロールにボタンを追加する独自のカスタム コントロールを作成するにはどうすればよいですか?
私はこのようなものが欲しい:
public class WrappedButton : WebControl
{
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
var button = new Button { Text = "Hello" };
button.Click += SomeCommand;
Controls.Add(button);
}
private void SomeCommand(object sender, EventArgs e)
{
Page.Response.Write("This won't get executed");
}
}