2009-07-10 25 views
2

UpdatePanelでポストバックをキューに入れる方法はありますか?キューasp.net UpdatePanelポストバック

私は多くのテキストボックスを持つフォームを持っています。各テキストボックスは、AutoPostBackがtrueに設定された独自のUpdatePanelの中​​にラップされます。テキストボックスが変更されると、ポストバックが発生します。

viewstateが無効です(したがって、心配する必要はありません)。

ユーザーが1つのテキストボックスを変更した後、次のテキストボックスにすばやく移動して変更し、タブを再度表示すると問題が発生します。ポストバックの一部が失われているので、私はそれを避けたいと思います。

答えて

1

これを制御する方法はありません。 jQueryにはかなり面白いものがあり、AJAXコールはかなりシンプルです。あなたは自分のポストバックをそのように扱うことを検討するかもしれません。

4

更新パネルが起動すると、クライアント側の「フック」が表示されます。これは、更新パネルが更新されている間に、少なくとも一時的にテキストボックスを無効にすることができることを意味します。

次のASP.NET/JavaScriptのスニペットでは、更新パネルを傍受してテキストボックスを表示して無効にする方法を示しています。

<form id="form1" runat="server"> 
    <asp:ScriptManager runat="server"></asp:ScriptManager> 
    <div> 
     <asp:UpdatePanel runat="server" ID="updatePane1"> 
      <ContentTemplate> 
       <asp:TextBox runat="server" ID="textBox1" AutoPostBack="true" OnTextChanged="textBox_TextChanged" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
     <br /> 
     <asp:UpdatePanel runat="server" ID="updatePane2"> 
      <ContentTemplate> 
       <asp:TextBox runat="server" ID="textBox2" AutoPostBack="true" OnTextChanged="textBox_TextChanged" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
     <br /> 
    </div> 
    </form> 
    <script type="text/javascript"> 
     Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequest); 
     function InitializeRequest(sender, args) { 
      if (args._postBackElement.id == 'textBox1' || args._postBackElement.id == 'textBox2') { 
       document.getElementById('textBox1').disabled = true; 
       document.getElementById('textBox2').disabled = true; 
      } 
     } 
    </script> 

私は、あなたが、もともとのために尋ねた(「UpdatePanelのでポストバックをキューにする方法がある」)、これは正確ではないですけど、正味の効果はありません、それはそう彼らの要求をキューするようにユーザーを強制的ということです一度に2つ以上が処理されています。あなたはおそらくもっとエレガントなものにこれを修正することもできます。

1

私は知っています、これはあなたの質問に対する答えではありません。しかし、実際には各テキストボックスを更新パネルで囲む必要がある場合は、再考することをお勧めします。更新パネルは便利ですが、使い方を慎重にする必要があります。シンプルなjQuery Ajaxソリューションがあなたのシナリオではより良いかもしれません。

+0

これは私がやったことです。更新パネルは一括処理(大量のHTMLを表示するか、一度に大きなフォームを送信するなど)には問題ありません。それはサーバーへの小さな、迅速なポストバックを吸う。 – Sumrak

関連する問題