2009-05-14 7 views
3

私はリピーターリピータのパネルの更新 - 同時に複数のコールバックができないのはなぜですか?

での更新パネルを持っている(編集:私はラナを取り除き、Idはポストを見クリーナーを作るために属性)

<asp:Repeater> 
    <ItemTemplate> 
     <asp:UpdatePanel UpdateMode="Conditional"> 
      <ContentTemplate> 
       <asp:LinkButton onclick="btnCallback_Click" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
     <asp:UpdateProgress DisplayAfter="0"> 
      <ProgressTemplate> 
       <img src="spinningProgress.gif" /> 
      </ProgressTemplate> 
     </asp:UpdateProgress> 
    </ItemTemplate> 
</asp:Repeater> 

アイデアは、あなたがLinkBut​​tonコントロールをクリックすることをここであり、それはコールバックそのデータ項目に対してサーバー側のアクションを実行します。これは1つのアイテムに対して完璧に機能します。ただし、前の更新パネルがコールバックを終了するのを待たずに、すべてのアイテムのボタンをクリックすると、前のコールバックをキャンセルするように見えます。

UpdatePanelsはコールバックを同時に実行できませんか?とにかく私はそれを作ることができるので、次のボタンをクリックする前に待つ必要はありませんか?

答えて

2

UpdatePanelを介して実行されるすべてのAJAXリクエストは、以前のものをキャンセルします(前回の実行中の場合)。これはそれがどのように構築されるかです。 UpdatePanel AJAXリクエストは、リクエストとともにViewStateの一部を渡します。同時のajax呼び出しによって戻された複数の任意のビューステートを調整することは(少なくとも非常に難しい)不可能です。私はこれがMSがそうした方法で構築した主な理由だと聞きました。

EDIT:jQueryのを使用して、私は前に同じ問題を抱えていた

+0

がらくた:-)そのようなことを実施していなかった、I本当に聞こえないことを望んでいました...私は、リクエストが終了するまで他のボタンを無効にするためにjQueryを使用すると思います。タンスク! –

0

:-)楽しみを持っています。しかし、私はいくつかのトリックを作って、異なるMicrosoftアップデートパネルで複数のajax calbacksを実装できることを知っています。

function ProcessCallBack(uniqID) 
{ 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    //checking if there is somewhere perforimg of callback 
    if (prm.get_isInAsyncPostBack()) 
    { 
     setTimeout("ProcessCallBack()", 1000); //here we move execution of callback 
     //for 1 sec forward 
    } 
    else 
    { 
     __doPostBack(uniqID,''); 
    } 
    return false; 
} 

したがって、その機能の呼び出しをボタンまたはコントロールのクライアント側のクリックに追加する必要があります。 uniqIDはサーバーコントロールの一意の識別子です。サーバー側で取得できます。 だから、楽しみ、すべてが可能であることを覚えているが、いくつかは、私はそれについて考えていた :-)時間TODOの多くを必要とするために、なぜマイクロソフトからの人は

関連する問題