Asp.NET DropDownList SelectedItem.Значение не изменяется

разметка:

            <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, так как это не обязательно.

когда я нажимаю кнопку для обратной передачи, значение selecteditem остается значением первого элемента в раскрывающемся списке. Что я упускаю?

Примечание Пожалуйста, прекратите отвечать и редактировать сообщения. Мы можем оставить все как есть, поскольку ответ уже получен.

5 ответов


если вы привязки данных в Page_Load, вы по существу также сбрасываете SelectedItem.

вы должны обернуть любой код привязки, который существует в Page_Load внутри if(!IsPostBack) заблокировать.

if(!Page.IsPostBack)
{

    // Your binding code here ...

}

ваш код, вероятно, также выполняется после обратной передачи, очищая поле, следовательно, теряя выбор и все.

если да, попробуйте обернуть код в что-то вроде if( !Page.IsPostBack ) { ... }.


Это ответ на "очевидное" решение наиболее частой причиной. Однако есть еще одна удивительная проблема, которая может вызвать это! Мои значения списка пришли из базы данных, и значения имели возврат строки и каретки: "\r\n". Эти ценности выглядят как невинное пространство, но на самом деле это не так! Моим решением было удалить эти скрытые значения Char. Надеюсь, это поможет.


Эй для первого индекса, чтобы добавить все, что не требуется добавлять. вам нужно вставить на определенный номер индекса

MyList.Items.Insert(0, "ALL");

да, вам не хватает, чтобы добавить выпадающий список Autopostback=true..

пожалуйста, попробуйте следовать в вашем .aspx-страницы