0

ASP.Net で WebControl を作成しようとしています。このコントロールでは、HTML コントロールでオーバーライドされた RenderControl メソッドがあります。

protected override void RenderContents(HtmlTextWriter output)
{
    output.Write(@"<table><tr><td>");
    output.Write(@"<input type=""submit"" name=""btnExecute"" value=""Execute""  id=""btnExecute"" />");
    output.Write(@"</td></tr></table>");
}

サーバー側のメソッド btnExecute_Click() を呼び出すことができるように、ボタンでクリックイベントを呼び出すにはどうすればよいですか? また、このボタンはサーバー側の前に JavaScript 関数を呼び出します。

それを機能させる方法を提案してください。

4

1 に答える 1

0

CompositeControl (WebControl の派生物) を実装する方法については、この例を確認してください。

http://msdn.microsoft.com/en-us/library/3257x3ea.aspx#Y114

そこにあるボタンは、コンポジットのプライベート メンバーとして存在します。これを初期化し、CreateChildControls のサーバー側メソッドに接続します。次に、CompositeControl の Render メソッドをオーバーライドするときに、ボタンの RenderControl メソッドを呼び出します。このようにすると、クリック イベントを asp.net ポストバックに接続する JavaScript がボタンから発行されます。

コールバックの前に実行される JS については... まあ、それは少し難しいかもしれません。私の提案は、ボタンに一意の CSS クラスを与え、メソッドを jQuery と結び付けることです。ただし、クライアント メソッドが完了するまで ASP.Net ポストバックをどのように遅らせるかはわかりません... 私には、これはパターンの野郎化のように感じます。ポストバックを使用した Asp.Net コントロール) またはすべてのクライアント側で実行します (ajax を使用した jquery)。

于 2011-02-07T22:09:33.820 に答える