2017-08-03 27 views
1

私はマスターページとコンテンツページを使用するasp.netアプリケーションを1つ使用しています。 コンテンツページの1つで、より多くのデータを含む1つのグリッドをロードしています。マスターページでは、キャンセルボタンを使用してプログレスバーイメージを表示するために更新パネルを使用しました。 コンテンツページにグリッドをロードすると、キャンセルボタンがプログレスバーに表示されます。進行状況をクリアするために、私はうまく動作しているjavascriptのキャンセルボタンをクリックして非表示にローダーイメージを書いています。ページの現在のプロセスを殺す方法

私のプロセスはまだ実行されていますキャンセルボタンをクリックするとこのプロセスがキャンセルされます。 以下は、マスターページボタンをクリックしたときに起動されるメソッドです。

private void ViewReports(string someFilterCondition) 
 
{ 
 
    //Business logic to get data from db. 
 
}
ビジネスロジックにと呼ばれるこの方法は、より多くの時間を割いて。キャンセルボタンをクリックすると、ロード中のイメージは隠されますが、プロセスがキャンセルされたかどうかはわかりません。ロードされたグリッドビューを取得した後、プロセスがまだ実行中であることがわかります。 現在のプロセスをキャンセルするにはどうすればよいですか?

+0

より多くの時間を割いてビジネスロジック - それは、SQLクエリが結果儀式を与えるために多くの時間を取っているようですか? – Kavin

+0

はいKavin、その理由は私がここに必要なのはキャンセルボタンのプロセスをクリックするとそれを殺すはずです。 –

+0

このhttps://stackoverflow.com/questions/4779679/stop-sql-query-execution-from-net-codeを参照してください。それがあなたを助けることを願う。 – Kavin

答えて

0

静的SQLコマンド変数をそのページでグローバルとして宣言します(コマンド変数のみ)。次に、1つのWebメソッドを記述し、その中にコマンドを取り消します。その後、キャンセルボタンをクリックするとAJAXを使ってWebメソッドを呼び出します。

//#

[WebMethod] 
public static string CancelProcess() 
{ 
    try 
    { 
     command.Cancel(); 
     return "true"; 
    } 
    catch (Exception ex) 
    { 
     return ex.Message.ToString(); 
    } 
} 

// Cそのページ

static SqlCommand command = new SqlCommand(); 

//でグローバルにこの変数を宣言するページ

using System.Web.Services; 

//の上に名前空間を追加します。 aspx

<asp:Button ID="BtnCancel" runat="server" Text="Cancel" OnClientClick="BtnCancel_ClientClick(); return false;" /> 

// JS

function BtnCancel_ClientClick() { 
    $.ajax({ 
     type: "POST", 
     url: "HomePage.aspx/CancelProcess", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
     }, 
     failure: function (response) { 
      // add error handling code here     
     } 
    }); 
} 

はそれがあなたのお役に立てば幸いです。..

+0

こんにちはキャビン、現在私はストアドプロシージャを呼び出すためのメソッドを持っている別のBAクラスを使用しています。このメソッドはasp.netページから呼び出しています。今私はどのように私はすでに実行されているそのメソッドにこのコマンドを送信するか分からない。私はajaxの呼び出しでチェックして、それがこのajax呼び出しプロセスが終了しない限り、データをロードするために既に実行中のプロセスが開始されていないことを知る必要があります。 –

+0

私はあなたのコードなしで、urコードなしで私は何でもすることはできません。私は何もできません..あなたのコードを投稿し、どこにstucking ..教えてください。 – Kavin

+0

BAは、ビジネスロジックがプロシージャを実行してデータを返すように定義されている他のクラスライブラリを持っていることを意味します。 1つのプロセスが既に実行中であれば、最初のプロセスが完了しないうちに別のプロセスを送信することはできません。その場合、どうすれば特定のコマンドを取り消すことができますか? –

関連する問題