У меня есть веб-форма ASP.NET, которая использует UpdatePanels для частичной обратной передачи страницы.В одной из моих UpdatePanels я использую AutoCompleteExtender из AjaxControlToolkit для вызова WebMethod на моей странице для асинхронного получения списка ProjectNames и связанных с ними значений ProjectID.Когда я выбираю элемент из списка, я использую jQuery для сохранения значения ProjectID на серверном элементе управления HiddenField.Мне нужно это значение, когда я нажимаю кнопку «Отправить» в UpdatePanel, чтобы выполнить запрос к базе данных.Пока все работает просто отлично.Вот соответствующий код на стороне клиента:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtProjectName" Width="200" ToolTip="Type the first few characters of the project to search for" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender ID="AutoComplete1" TargetControlID="txtProjectName" MinimumPrefixLength="2"
CompletionInterval="250" CompletionSetCount="20" ServiceMethod="GetProjectCompletionList"
ServicePath="Default.aspx" runat="server" OnClientItemSelected="itemSelected" />
<asp:HiddenField ID="hdnProjectID" runat="server" />
<asp:Label ID="lblProjectName" runat="server"></asp:Label>
<script type="text/javascript">
function itemSelected(source, eventArgs) {
$get('<%= hdnProjectID.ClientID %>').value = eventArgs.get_value();
$get('<%= lblProjectName.ClientID %>').innerHTML = eventArgs.get_text();
}
</script>
<br /><br />
<asp:Button ID="btnSubmit" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
Но я также хочу отобразить выбранный текст ProjectName где-нибудь за пределами TextBox.Причина этого в том, что я хочу получить четкий способ визуально различать значение в TextBox, которое соответствует элементу в списке, возвращаемом AutoCompleteExtender, и любой старый посторонний текстовый остаток, который ничего не соответствует.Итак, я попытался отобразить выделенный текст в элементе управления Label, но как только происходит обратная передача, это значение исчезает.Я пытался использовать различные серверные и HTML-элементы управления, но поведение такое же ... за исключением элемента управления ASP.NET HiddenField.Я не уверен, почему этот элемент управления сохраняет эти значения во всех постбэках, а другие нет, но я все еще остался без полного решения.
Я обнаружил, что если метка, которую я использую для отображениязначение равно ВНЕ UpdatePanel, оно работает нормально, но то, как моя форма в настоящее время выложена, это не вариант.Я понимаю, что есть несколько лучших альтернатив использованию UpdatePanel, когда вам нужен более детальный контроль над тем, что обновлять при частичной обратной передаче страницы, но я бы предпочел не вдаваться в подробности, если есть более простое решение моей проблемы.