2016-07-27 5 views
0

私はExcel文書を解析する大きな方法を持っています。全体を解析するためには、今のところ約10分必要です(はい、多くのシートを持つ非常に大きなExcelドキュメントです)。このメソッドは、ユーザーがドロップダウンリストから特定の値を選択したときに呼び出されます。私は、解析を処理していることをユーザーに示すパネルをブロックするために、次のブロック関数を使用しています。私の更新パネルはブロック解除されません

function lockGridUI() { 
     $('#<%=UpdPnl_RevReports.ClientID%>').block({ 
      message: $('<img src="../Images/loaders/load.gif"/>') 

     }); 

問題は、私のExcelドキュメントを解析するために、4分以上を必要とする場合、私のパネルは永遠にブロックされたままであることです!私は機能をブロック解除するタイムアウトを設定していますが、私はパネルをブロック解除するためにタイムアウトを追加したくありません。なぜなら、解析に必要な時間を知っていないからです。

私は背後にあるコードから次を試しています

string sScript = ""; 
    sScript = sScript + "function unlockUI() {"; 
    sScript = sScript + @"$('#<%=UpdPnl_RevReports.ClientID%>').unblock();" ; 
    sScript = sScript + "}"; 


    // REGISTER NOW. 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "Registered Script", sScript, true); 

残念ながら運と!私は、メソッドの最後にあるコードからjavascript関数を呼び出しましたが、まだ運がありません。

私の方法が終了してもパネルがブロックされたままになる理由はわかりません。

何かお勧めしますか?

+0

ユーザーが処理からいくつかの結果を期待していますか?すぐにユーザーに「チケット」を返し、処理をバックグラウンドにする方がよいでしょう。プロセスの最後に、チケットをDBまたはファイルに保存します。ユーザーはチケットを使用して結果を確認できます。 –

答えて

1

あなたはコードビハインドでこれを試すことができます。

ScriptManager.RegisterStartupScript(this, this.GetType(), "Registered script", string.Format("$('#{0}').unblock();", UpdPnl_RevReports.ClientID), true); 

あなたはまたのScriptManagerでの非同期ポストバックのタイムアウトを増やすことができます

<asp:ScriptManager ID="scriptManager1" runat="server" AsyncPostBackTimeout="1800" /> 
+0

もう一度申し訳ありません! – apoellitsi

+0

このコードが呼び出されるイベントハンドラを(質問の中で)見ることができますか?そして、それが同じ関数にない場合、コードビハインドで長い処理が開始される方法は? – ConnorsFan

+0

メソッドが存在する直前に関数を呼び出します。ブレークポイントを追加すると、実際にこのコードから渡され、メソッドが存在することがわかります。 – apoellitsi

関連する問題