2011-09-15 3 views
0

私は数多くのチェックを行うサイトを作成しました。これらのチェックは、ボタンを介して開始され、完了するまで数分かかる(基本的には、いくつかのデータチェックが実行され、mysqlデータベースに書き込む)。私はその後、mysqlデータベースにバインドされたgridviewコントロールを持っています。チェックが完了すると、ページがリフレッシュされ、グリッドビューが更新されます。完璧!ポストバックにつきました

これはできるだけ早くボタンがチェックされると、サイトは長いリフレッシュ状態になります...私は、何かが起こっているユーザーに伝えることができないという事実以外のすべての

良いです。私はそれが実行されているなどと言うために、ページ上の任意のラベルを更新できません。すべてのラベルは、C#コードが完了した後に更新されます。

私は、サーバー上で、ページが戻ってラベルが更新される(バックグラウンドワーカーがイベントを完了したときにデータグリッドをバインドする)喜んではいないが、バックグラウンドワーカーが完了するのを待ちます!

また、パネル内にラベルを追加してからpanel.update()を呼び出すだけで、すべてのコードが終了するまで実際には更新されません。

技術的でないアイデアはありますか?すべてのコードが追加されました。

+0

はい、私はscriptmanagerを追加しましたが、それはうまくいかないようです。 –

+0

ボタンだけでなく、AjaxコントロールからC#コードを開始する必要があると言っていますか? –

+3

scriptmanagerを使用して、asp.netのupdatepanelsで最初に読んでください。ちょうどGoogle ASP.netのupdatepanel、あなたはupdatepanel内のいくつかの並べ替えのgridviewコントロールをスローする必要があります。更新パネル内には、進行中のバーや、データの更新中に更新されるラベルがあります。 – JonH

答えて

1

これを行う最も簡単な方法は、あらかじめ作成された「UpdateProgress」コントロールを使用することです。

新しいページを作成して、この例を解説しました。ページには、ボタンがクリックされたときの負荷のテキストを持っており、5秒後にページ内容の変更と負荷メッセージがなくなっている:

ASP内容:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 

    <asp:UpdateProgress AssociatedUpdatePanelID="UpdatePanel1" runat="server"> 
     <ProgressTemplate> 
      <p>text that indicates stuff is happening in the background (example: loading please wait)</p>   
     </ProgressTemplate> 
    </asp:UpdateProgress> 


    <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 

      <asp:Button ID="Button1" runat="server" Text="Click me!" 
       onclick="Button1_Click" /> 
      <br /> 
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>   

     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> 
     </Triggers> 
    </asp:UpdatePanel> 

CS内容:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     //wait five seconds to demonstrate the idea 
     System.Threading.Thread.Sleep(5000); 

     //update page content 
     Label1.Text = "Stuff in the background has finished executing and the page has been loaded with the new content."; 
    } 

をあなたが知っている質問があれば、これは、ScriptManager、UpdateProgressコントロール、独自の読み込みテキストを追加してコードをボタンの後ろに置くだけのコードであれば実装することができます。

関連する問題