0

私が欲しいのは、ボタンをクリックしている間、コードがモーダルボックスを表示し、コードビハインドが残りを処理し続けることです。

ボタン:

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

次に、コード ビハインドでonclick、Button1 に追加します。

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>

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

4

2 に答える 2

3

JSのreturn falseonclick ハンドラーは、既定のフォーム アクションの実行を停止するため、サーバー側の ASP.NET メソッドが呼び出されることはありません。

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

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

于 2012-05-01T11:22:45.660 に答える
1

次のように、OnClientClick に直接入れてみませんか。

<asp:Button ID="Button1" runat="server" Text="Start" OnClientClick="shopModalPopup"></asp:Button>
于 2012-05-01T05:07:55.800 に答える