Asp.NET DropDownList SelectedItem.Value не меняется
Разметка:
<div style="float:left;margin-top:15px;width:80px">
<asp:DropDownList ID="MyList" runat="server" Width="100px"></asp:DropDownList>
</div>
код:
// clear vehicles list
MyList.Items.Clear();
// add 'all' option
MyList.Items.Add(new ListItem("ALL", "0"));
// add assets
foreach (CustomClass item in items)
MyList.Items.Add(new ListItem(item.Name, item.ID.ToString()));
Не запускается событие для SelectedIndexChanged, так как это необязательно.
Когда я нажимаю кнопку для обратной передачи, значение выбранного элемента остается значением первого элемента в DropDownList. Что мне не хватает?
Примечание
Пожалуйста, прекратите отвечать и редактировать сообщения. Мы можем оставить его как есть, так как он уже получил ответ.
Ответы
Ответ 1
Если вы привязываетесь к данным в Page_Load
, вы по существу также перезагружаете SelectedItem.
Вы должны заключить любой код привязки, который существует в Page_Load
внутри блока if(!IsPostBack)
.
if(!Page.IsPostBack)
{
// Your binding code here ...
}
Ответ 2
Ваш код, вероятно, выполняется после обратной передачи, очищая поле, следовательно теряя выделение и все.
Если да, попробуйте обернуть код чем-то вроде if( !Page.IsPostBack ) { ... }
.
Ответ 3
Таким образом, этот ответ является "очевидным" решением наиболее распространенной причины. Однако есть еще одна удивительная проблема, которая может вызвать это! Значения моих списков были получены из базы данных, а значения имели возврат строки и возврат каретки: "\ r\n". Эти ценности выглядят как невинное пространство, но на самом деле это не так! Мое решение состояло в том, чтобы удалить эти скрытые значения Char. Надеюсь, что это поможет.
Ответ 4
hey для первого индекса добавить все, что не требуется для добавления. вам нужно вставить конкретный индексный номер
MyList.Items.Insert(0, "ALL");
Ответ 5
Да, вам не хватает добавить раскрывающийся список Autopostback = true..
Пожалуйста, попробуйте следующее на странице .aspx