1

いくつかのページを機能させようとしていますが、問題があり、解決策がわかりません...

次のようなコードがあります。

Protected Sub chkClient_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkClient.CheckedChanged
    If chkClient.Checked Then
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(), "alert('Processing')", True)
        LoadClients()
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(), "alert('Done')", True)
    End If
End Sub

実際のところ、関数LoadClients()の処理には少し時間がかかり、関数の完了に両方のアラートが発生します。何故ですか?LoadClients()関数の前に"alert('Processing')"を発生させるにはどうすればよいですか?

どうもありがとう!

4

3 に答える 3

2

LoadClients はサーバー側で処理されているため、RegisterStartUpScript への呼び出しは、ページの読み込み時にクライアント側で実行するコードを配線しています。

RegisterStartUpsScript の詳細といくつかの例を次に示します。

リンク

処理が開始される前に最初のアラートを表示したい場合は、jQuery などの多くのライブラリを利用できる ajax 呼び出しを使用するか、クリック イベント (または他のイベント) でフォームが送信される前に単にアラート JavaScript を実行することができます。フォームの送信に使用している

于 2013-07-08T20:36:41.803 に答える
2

ページをロードすると、アラートが表示され、[OK] をクリックするとアラートが表示さProcessingDoneますProcessing

すべてのコードはサーバー側で実行されるため、レンダリング時に HTML にアラートを追加するようにページに指示し、次にページを実行するように指示し、LoadClients()次に別のアラートを HTML に追加するようにページに指示します。

行全体ScriptManager.RegisterStartupScript(Page,....は単に「このページがレンダリングされるときに、この JavaScript もレンダリングするようにしたい - 実際にはその場で実行されるわけではない。

これをすべてクライアント側で行うには、Web メソッドへの AJAX 呼び出しを実行する必要があります。このメソッドは、クライアントをロードし、それを処理して表示するブラウザに返します。

これは基本的なチュートリアルです。これにより、JavaScript と AJAX 呼び出しを使用して Web メソッドを呼び出す方法についてのアイデアが得られます。そこから世界はあなたのカキです:):http://trentgardner.net/net/asp-net-webmethods-with-jquery-and-ajax/

于 2013-07-08T20:39:07.910 に答える