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