2011-08-16 12 views
0

私はasp.netにバックグラウンドワーカーを持っています。進行中にカウントされた割合を変更してjqueryの進行状況バーに表示したいと思います。 0% - > 10% - > 20% - > .... - > 100%Jquery Ajaxとページロードセッションの割り当てに問題がありますか?

しかし、残念ながら、ページ[読み込み]でセッション["UserName"] = "abc"を割り当てると、非同期ポストバックは実行されません!バー率が(直接数秒後)--- ... 0%を示している進捗状況 - > 100%

のjQuery

$(document).ready(function() { 
      $("#progressbar").progressbar(); 
        setTimeout(updateProgress, 100); 
     }); 

     function updateProgress() { 
        $.ajax({ 
         type: "POST", 
         url: "Downloader.aspx/GetData", 
         data: "{}", 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         async: true, 
         success: function(msg) { 
          // Replace the div's content with the page method's return. 

          $("#progressbar").progressbar("option", "value", msg.d); 
         } 
        }); 
       } 

Downloader.aspx.cs

static BackgroundWorker _bw; 
public static int Percent { get; set; } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     _bw = new BackgroundWorker 
     { 
      WorkerReportsProgress = true, 
      WorkerSupportsCancellation = true 
     }; 
     _bw.DoWork += bw_DoWork; 
     _bw.ProgressChanged += bw_ProgressChanged; 
     _bw.RunWorkerCompleted += bw_RunWorkerCompleted; 

     _bw.RunWorkerAsync("Hello world"); 
    } 

    void bw_DoWork(object sender, DoWorkEventArgs e) 
    { 

     for (int i = 0; i <= 100; i += 20) 
     { 
      if (_bw.CancellationPending) { e.Cancel = true; return; } 
      _bw.ReportProgress(i); 
      Thread.Sleep(1000); 
     } 
     e.Result = 123; 
    } 

    void bw_RunWorkerCompleted(object sender, 
             RunWorkerCompletedEventArgs e) 
    { 
      percentage.Text = "Complete: " + e.Result;  // from DoWork 
    } 

    void bw_ProgressChanged(object sender, 
            ProgressChangedEventArgs e) 
    { 
     Percent = e.ProgressPercentage; 
    } 

    [WebMethod] 
    public static int GetData() 
    { 
     return Percent; 
    } 

ページロードでセッション["UserName"] = "abcd"に追加するまで上記のコードは動作します

Downloader.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
    { 
     Session["userName"] = "abcd!"; 
    } 

、誰もが何が起こっているか教えてもらえますか?私はすでに2日以内にそれを描くように言いましたが、まだID T__Tはありません。

答えて

0

私はあなたに、そのポストバックやsomethngのようなものを書いているようなものを条件付けする必要があると推測しています。しかし確かに..もしあなたが問題にならなければ、ページのレンダリングにthieを動かすこともできますか?

ウェブフォームを忘れてしまった。

関連する問題