2011-02-07 6 views
0

ASP.Netでは、WebControlを作成しようとしています。このコントロールでは、私は自分のhtmlコントロールでRenderControlメソッドをオーバーライドしています。javascript関数とサーバー側関数を起動するカスタムWebcontrolにサーバーコントロールを追加します。

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関数を呼び出します。

どのように動作させるように提案してください。

答えて

0

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

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

あなたのボタンは、あなたのコンポジットのプライベートメンバーとして存在します。それを初期化し、CreateChildControlsのサーバーサイドメソッドに配線します。次に、CompositeControlのRenderメソッドをオーバーライドするときに、ボタンのRenderControlメソッドを呼び出します。このようにすると、clickイベントをasp.netポストバックにワイヤリングするjavascriptがボタンに表示されます。

コールバックより前に実行されるJSについては...まあ、ややこしいかもしれません。私の提案は、ButtonにユニークなCSSクラスを与え、jQueryでメソッドを結びつけることだけです。しかし、私はあなたのクライアントメソッドが完了するまでASP.Netのポストバックをどのように遅らせるかはわかりません...私には、これはパターンの繁栄のように感じます、あなたはどちらかのように思えます。 Asp.Netはポストバック付きのコントロール)、またはすべてのクライアント側(jquery with ajax)で行うことができます。

+0

ありがとうTangled2。私はこれを試み、すぐに戻ってくるでしょう。 –

関連する問題