Обработчик событий SelectedIndexChanged получает старый индекс
Вопрос
я занимаюсь onSelectIndexChanged
событие.Событие возникает при изменении выбора DropDownList.проблема в том, что DropDownList по-прежнему возвращает старые значения для SelectedValue
и SelectedIndex
.Что я делаю не так?
Вот определение DropDownList из файла aspx:
<div style="margin: 0px; padding: 0px 1em 0px 0px;">
<span style="margin: 0px; padding: 0px; vertical-align: top;">Route:</span>
<asp:DropDownList id="Select1" runat="server" onselectedindexchanged="index_changed" AutoPostBack="true">
</asp:DropDownList>
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</div>
Вот выпадающий список OnSelectedIndexChanged
обработчик события:
protected void index_changed(object sender, EventArgs e)
{
decimal d = Convert.ToDecimal( Select1.SelectedValue );
Literal1.Text = d.ToString();
}
Решение
Есть ли у вас какой-либо код при загрузке страницы, который случайно меняет значение по умолчанию на первое значение?
Когда страница перезагрузится, вы увидите новое значение?
Другие советы
Если вы используете AJAX, вы также можете выполнять обратный вызов, а не полную обратную передачу.В этом случае вы можете использовать это в методе загрузки страницы:
if (!IsCallback && !IsPostBack)
{
// Do your page setup here
}
Добавь это:если страница.isnotpostback {
} вокруг вашего кода, чтобы связать раскрывающий список.
Это может показаться очевидным, но тем не менее.Инициализируете ли вы этот раскрывающийся список начальным значением в каком-нибудь другом обработчике событий, например OnLoad?Если это так, вам следует проверить, вызвано ли это событие обратной передачей или первой загрузкой.Итак, у вас должно быть что-то вроде
if(!IsPostback) d.SelectedValue = "Default"
Возможно ли, что у вас есть элементы, скопированные по всему источнику данных для раскрывающегося списка?