Я обрабатываю событие 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>
Вот обработчик события DropDownList OnSelectedIndexChanged:
protected void index_changed(object sender, EventArgs e)
{
decimal d = Convert.ToDecimal( Select1.SelectedValue );
Literal1.Text = d.ToString();
}





Есть ли у вас какой-либо код при загрузке страницы, который случайно меняет значение по умолчанию на первое значение?
Когда страница перезагружается, вы видите новое значение?
Я проверил и с удивлением обнаружил, что у меня есть код в Page_Load, который меняет значение по умолчанию. Спасибо, Митчел!
Пять лет спустя, и все еще актуально. Проблема заключается в том, что runat = "server" инициирует публикацию, вызывая Page_Load и все остальное, что может быть не сразу очевидно.
Возможно ли, что у вас есть элементы, скопированные из вашего источника данных для раскрывающегося списка?
Добавь это: if page.isnotpostback {
} вокруг вашего кода, чтобы связать раскрывающийся список.
Это может показаться очевидным, но все же. Вы инициализируете это раскрывающееся меню с начальным значением в каком-либо другом обработчике событий, например OnLoad? Если это так, вы должны проверить, вызвано ли это событие обратной передачей или первой загрузкой. Итак, у вас должно получиться что-то вроде
if (!IsPostback) d.SelectedValue = "Default"
Если вы используете AJAX, вы также можете выполнять обратный вызов, а не полную обратную передачу. В этом случае вы можете использовать это в методе загрузки страницы:
if (!IsCallback && !IsPostBack)
{
// Do your page setup here
}
Это правда? Я почти уверен, что IsPostBack вернет true в обоих случаях.
да, это первое, о чем я тоже подумал.