#asp.net
#asp.net
Вопрос:
У меня есть код на одной из моих страниц, который приведен ниже:
<asp:button id="btnTest" runat="server" onclick="btnTest_click" />
<div class="TomasForm">
<ul>
<li>
<asp:Label ID="LineL" runat="server" AssociatedControlID="Lines" Text="<%$ FieldLabelResources:Units, Line, false %>" />
<asp:DropDownList ID="Lines" runat="server" AutoPostBack="true" AppendDataBoundItems="true"
DataTextField="Name" DataValueField="Id" OnSelectedIndexChanged="Lines_SelectedIndexChanged">
<asp:ListItem Text="<%$ Resources:Common, SelectOne %>" Value="-1" />
</asp:DropDownList >
</li>
</ul>
</div>
Моя проблема в том, что когда я меняю значение выпадающего списка Lines, страница (события page_load и Lines_SelectedIndexChanged) вызывается дважды.
Страница ведет себя нормально, когда я нажимаю кнопку btnTest.
Может ли кто-нибудь сообщить мне, почему это происходит??
Спасибо, Махеш
Комментарии:
1. Не могли бы вы, пожалуйста, предоставить код..
2. Возможно, вы захотите вставить код из вашего обработчика событий SelectedIndexChanged.
3. Если вы установите выбранное значение в обработчике событий загрузки страницы (или другом событии жизненного цикла), то измененное событие будет запущено снова.
Ответ №1:
Вам нужно изменить значение AutoPostBack на False в вашем выпадающем списке.
Комментарии:
1. но если OP хочет, чтобы страница выполняла обратную отправку при изменении выпадающего списка (что нормально), она не должна запускать события страницы дважды…
Ответ №2:
Вы должны установить значение AutoPostBack равным false для выпадающего списка и в коде, убедитесь, что вы записали условие, подобное этому, в Page_Load if (!IsPostBack()) { // Напишите свой код, он сработает только один раз }
Комментарии:
1. Но я хочу выполнить обратную отправку при изменении значения выпадающего списка.
2. Это код обратной отправки, который я использую: защищенная пустая загрузка страницы (отправитель объекта, EventArgs e) { if (!IsPostBack) { Строки. Источник данных = TomasContext.Current. GetTubeLines(); Строки. DataBind(); } }