У меня есть выпадающий список, у меня есть источник данных, у меня AutoPostBack
установлен на true
.
Я хочу добавить первую запись в источник данных, который говорит что-то вроде "--- select country ---", и выбор этой записи не приведет к обратной передаче.
Это похоже на то, что это должно быть легко сделать, но я не могу найти подходящее решение.
Спасибо.
Как добавить пустую первую запись в папку <asp: DropDownList>?
Ответ 1
На странице aspx (важная часть обрабатывает событие DataBound и устанавливает CausesValidation = "true" для принудительной проверки выпадающего списка):
<asp:DropDownList ID="ddlCountries" runat="server" DataSourceID="dsCountries" AutoPostBack="true" OnDataBound="ddlCountries_DataBound" CausesValidation="true" />
<asp:RequiredFieldValidator ID="rfvCountries" runat="server" ControlToValidate="ddlCountries" Display="Dynamic" ErrorMessage="Please select a country." />
В вашем коде (важно, чтобы значение вставленного элемента было String.Empty для работы обязательного поля проверки!):
protected void ddlCountries_DataBound(Object sender, EventArgs e)
{
ddlCountries.Items.Insert(0, new ListItem("--- select country ---", String.Empty));
}
Примечание. Если вы не хотите, чтобы сообщение валидатора отображалось, установите для свойства "Показать" значение "Нет".
Ответ 2
Вы также можете добавить строку вручную через конструктор, но вы должны убедиться, что свойство DropDownList AppendDataBoundItems = True также, чтобы строки данных привязывались к первой строке.
Ответ 3
Предыдущие ответы касаются вставки значения, но я понимаю, что ваша проблема - свойство AutoPostBack. Я полагаю, вы не хотите отсылать эту ценность и что ваша проблема, я прав?
Может быть, есть лучшее решение, но я бы предложил не использовать AutoPostBack. Вы можете выполнить обратную передачу автоматически, используя выбранное событие изменения значения.
ИМХО, если AutoPostBack не работает так, как вы хотите, всегда лучше реализовать свое собственное решение, чтобы наложить на него какой-то "патч", чтобы "исправить" его.
Надеюсь, что поможет
Ответ 4
Используйте метод вставки, поскольку другие предложили добавить элемент в индекс 0 со значением, чтобы указать не выбранное (например, "неизвестно" ). Затем используйте валидаторы, добавьте необходимый валидатор поля и установите для свойства InitialValue значение нового элемента списка ( "неизвестно" в нашем примере).
Установите индекс 0 как выбранный элемент при загрузке страницы, а если не обратный вызов.
Если пользователь не выбирает другую опцию, валидатор предотвратит обратную передачу.
Надеюсь, что вы ищите.