0

独自のカスタム コントロールを作成する場合は、すべてのコントロールを 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");
    }
}
4

0 に答える 0