Вы можете получить "хук" на стороне клиента, когда панель обновлений собирается сработать. Это означает, что вы можете, по крайней мере, временно отключить текстовые поля (или получить какое-то уведомление «пожалуйста, подождите»), пока обновляется панель обновления.
В следующем фрагменте 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»), но чистый эффект заключается в том, что он заставляет пользователя ставить в очередь свои запросы, поэтому не более обрабатывается за один раз. Вы, вероятно, можете изменить это к чему-то более элегантному.