2009-04-28 24 views
5

私は、アプリケーション内のExcelスプレッドシートのインポート機能を持っています。現在、FileUploadコントロールが使用されています。ファイルをアップロードし、そのファイルに対して操作を実行します。私は、実行されている操作と実行されたパーセンテージをユーザーに通知したい。 Excelスプレッドシートから抽出した行の総数を取得し、各レコードをデータベースに挿入してプログレスバーを更新することで、連続的に分割することができます。ASP.NET AJAXプログレスバー:コードからの更新?

問題は、コードビハインドから進行状況バーを更新するソリューションが見つからないようです。私はMatt Berseth's solutionを使ってみました。

これは非常にうれしいですが、私はコードビハインドからそれを動作させることはできません。理論的には、ページ上のテキストボックスに値を入力し、onchangeをJavaScript関数に設定してパーセンテージを設定するとテストとして機能することがわかりましたが、それでも目的の結果が得られませんでした。

どのようにこれを行うことができますか?

答えて

1

標準のFileUploadコントロールを使用してファイルアップロードのステータスを確認することはできません。あなたは、ファイルをサーバーにアップロードし、ODBCを使用してファイルに接続し、非同期でデータベースに行を読み込んだり挿入したりすることができます(ページへのajax要求やスクリプトサービスの使用による)。

プログレスバーが表示される限り、CSSプログレスバーを使用するだけです(簡単な例はhttp://css-tricks.com/examples/ProgressBars/です)。

:あなた*の.asmxファイルのようなものが含まれている必要があり

:次に、あなたがサーバーから自分の進捗状況を返すことができる方法で(ウェブseriviceを使用して)スクリプトサービスを構築する必要があり

[WebMethod] 
public int GetStatus() 
    { 
     int progress = 0; // in percents 
     // your server-side code here 
     return progress; 
    } 

あなたのaspxページのようなものを含める必要があります。その後、あなたは定期的に、JavaScriptからそのメソッドを呼び出すことができる必要があり

<asp:ScriptManager runat="server" ID="ScriptManager"> 
<Services> 
    <asp:ServiceReference Path="~/services/import.asmx" InlineScript="false" /> 
</Services> 
</asp:ScriptManager> 

を(exampのための毎秒ル、setTimeoutメソッドを使用して)、簡単なJavaScriptやjQueryを使ってプログレスバーの幅を更新:

var tout, service; 

function UpdateStatus() { 
    if (tout != null) 
     clearTimeout(tout); 

    if (service == null) 
     service = new namespace.here.serice_class_here(); 

    service.GetStatus(onSuccess, onFailure);  
} 

function onSuccess(result) { 
    // update the width of the progress with result (the integer value of the progress) 
    progress_bar.style.width = percent + "%";   

    // call the method again 
    tout = setTimeout("UpdateStatus()", 1000); 
} 

function onFailure(error) { 
    alert(error.get_message()); 
} 

あなたがするonSuccess JavaScriptの機能を拡張することができ、進行状況が(返された値が100%である)が完了したときににユーザーをリダイレクトすることができ別のページを表示したり、必要に応じて情報やボタンを表示したりできます。

こちらがお役に立てば幸いです。

関連する問題