ASP.NET DropDownList / HTML выбор списка по умолчанию - PullRequest
3 голосов
/ 18 июля 2010

Для моей страницы ASP.NET в коде позади я загружаю различные элементы / опции в DropDownList, но я не устанавливаю значение по умолчанию, назначая SelectedIndex. Я заметил, что для обратной передачи SelectedIndex имеет значение 0, даже если я никогда не устанавливал фокус или не изменял значение в DropDownList.

Если в коде или разметке не указано иное, будет ли использоваться значение по умолчанию 0 для SelectedIndex при обратной передаче с DropDownList? Если да, является ли это частью стандарта HTML для списков выбора или это просто способ, которым он реализован для ASP.NET?

Ответы [ 2 ]

5 голосов
/ 18 июля 2010

Это нормальное поведение для элемента управления HTML SELECT.

Если не используется выбранное свойство, оно всегда будет начинаться с первого элемента (индекс 0).

Во многихВ таких случаях я не хочу этого в ASP.NET, потому что я специально хочу, чтобы пользователь выбрал опцию.

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

т.е.

<asp:DropDownList runat="server" DataSourceID="SomeDS" AppendDataBoundItems="true"> // Notice the last property
    <asp:ListItem Text="Please select an option" Value="" />
</asp:DropDownList>

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

2 голосов
/ 22 августа 2013

Для любого, кто ищет способ сделать это из кода, вы можете добавить дополнительный элемент списка, используя функцию Insert и указав Index из 0, как упомянуто в этом вопросе SO..Обязательно сделайте это после того, как вы позвоните DataBind()

myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();

myDropDownList.Items.Insert(0, new ListItem("Please select", ""));
...