2012-05-01 6 views
0

ボタンをクリックしている間、コードはModalboxを表示しなければならず、コードビハインドは残りの処理を続けます。DIsplayサーバーがコードを処理するのを待っている間に

ボタン:次に

<asp:Button ID="Button1" runat="server" Text="Start"></asp:Button> 

コードビハインド上 - ボタン1にonclickを追加します。

Generate_Button.Attributes.Add("onclick", "shopModalPopup(); return false;") 

をそして私はButton1.clickのイベントハンドラを持っている:

Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
    'The process goes here 
End Sub 

javascriptとモーダルボックス:

<script> 
var grid_modal_options = { 
    height: 200, 
    width: 500, 
    resizable: false, 
    modal: true 
}; 

function shopModalPopup() { 
    $("#dialog-form").dialog(grid_modal_options); 
    $("#dialog-form").parent().appendTo('form:first'); 
} 
</script> 

<div id="dialog-form" title="Processing Request" style="display: none;"> 
    <div class="in"> 
     <center><h2> Please wait while we're processing your request. </h2></center> 
    </div> 
</div> 

上記のコードは、モーダルボックスを表示しますが、ボタンクリックハンドラーで次のコードを処理しません。どうやってやるの?どうもありがとうございました。示すように、あなたが直接、OnClientClickに入れていないのはなぜ

+1

なぜ偽を返すのですか?クリックイベントが 'Sub Button1_Click'までバブリングするのを防ぐことはできませんか?私はそれがaspになると無駄ですが、ネイティブDOM/AJAXでは、プロセスが完了したときにモダリティボックスを再隠すようにコールバックする必要があります。 – Anthony

+0

@Anthony:こんにちはアンソニー、ありがとう、私は '戻りfalse;を削除しようとしました! :) –

答えて

3

return falseあなたのJSでonclickのハンドラが起こってから、デフォルトのフォームアクションを停止するので、あなたのサーバー側のASPます。 NETメソッドは呼び出されません。

return falseを削除すると、モーダルダイアログが表示され、サーバー側の呼び出しが行われます。しかし、それは適切な非同期呼び出しではなく、完全なポストバックになります。したがって、サーバーメソッドがビジネスを終了すると、ページは完全に更新されます。これはモーダルダイアログを削除する効果があります(ページが完全にレンダリングされるため)が、これはおそらくあなたが望むものではないと思います。非同期呼び出しが終了したときに、モーダルダイアログにユーザに何らかのメッセージを表示させ、ページをリフレッシュしないようにしたいでしょうか?

適切な非同期呼び出しが必要な場合は、コードビハインドでjQueryと[WebMethod]ページメソッドを使用することをお勧めします。これを行う方法に関する素晴らしいチュートリアルについては、this article by Dave Wardをご覧ください。

+0

うわー、ありがとう、それは仕事だ! =) –

1

<asp:Button ID="Button1" runat="server" Text="Start" OnClientClick="shopModalPopup"></asp:Button> 
関連する問題