Подтвердить что ты не робот

Выпадающий список Databound - начальное значение

Как установить начальное значение выпадающего списка databound в ASP.NET?

Например, я хочу значения, но первое значение для отображения должно быть - Выберите One ---, с нулевым значением.

4b9b3361

Ответ 1

Я думаю, что вы хотите сделать это:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="--Select One--" Value="" />   
</asp:DropDownList>

Убедитесь, что для параметра "AppendDataBoundItems" установлено значение true, иначе вы удалите элемент списка "- Выберите один" при связывании данных.

Если у вас есть свойство "AutoPostBack" в раскрывающемся списке, установленном в true, вам также нужно будет установить свойство "CausesValidation" на true, а затем использовать ' RequiredFieldValidator ', чтобы убедиться, что опция' -Select One-- 'не вызывает обратную передачу.

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator>

Ответ 2

Я знаю, что это старо, но сочетание этих идей приводит к очень изящному решению:

Сохранять все настройки свойств по умолчанию для DropDownList (AppendDataBoundItems = false, Пункты пустые). Затем обработайте событие DataBound следующим образом:

protected void dropdown_DataBound(object sender, EventArgs e)
{
    DropDownList list = sender as DropDownList;
    if (list != null)
        list.Items.Insert(0, "--Select One--");
}

Обледенение на торте заключается в том, что этот обработчик может быть разделен любым количеством объектов DropDownList или даже помещен в универсальную библиотеку утилиты для всех ваших проектов.

Ответ 3

То, что я делаю, задает свойство text выпадающего списка ПОСЛЕ того, как я его привязываю. Что-то вроде этого:

   protected void LoadPersonComboBox()
    {
        var p = new PeopleBLL();

        rcmbboxEditPerson.DataSource = p.GetPeople();
        rcmbboxEditPerson.DataBind();
        rcmbboxEditPerson.Text = "Please select an existing person to edit...";
    }

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

Ответ 4

Я знаю, что у этого уже есть выбранный ответ, но я хотел бросить в свои два цента. У меня есть раскрывающийся список данных:

<asp:DropDownList 
  id="country" 
  runat="server" 
  CssClass="selectOne" 
  DataSourceID="country_code" 
  DataTextField="Name" 
  DataValueField="CountryCode_PK"
></asp:DropDownList>
<asp:SqlDataSource 
  id="country_code" 
  runat="server" 
  ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
  SelectCommand="SELECT CountryCode_PK, CountryCode_PK + ' - ' + Name AS N'Name' FROM TBL_Country ORDER BY CountryCode_PK"
></asp:SqlDataSource>

В коде кода у меня есть это ((который по умолчанию выбирает Соединенные Штаты):

if (this.IsPostBack)
{
  //handle posted data
}
else 
{
  country.SelectedValue = "US";
}

Страница изначально загружается на основе значения "US", а не пытается беспокоиться о выбранномIndex (что, если в таблицу данных добавлен другой элемент - я не хочу перекодировать)

Ответ 5

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

если мы имеем

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>

вы бы использовали:

DropDownList1.Items[DropDownList1.SelectedIndex].Value

это вернет значение для выбранного индекса.

Ответ 6

Добавьте элемент и установите его свойство "Выбранное" равным true, вы, вероятно, захотите установить свойство "appenddatabounditems" равным true также, чтобы ваше начальное значение не удалялось при привязке данных.

Если вы говорите об установке начального значения, которое находится в ваших элементах привязки данных, тогда подключайтесь к событию ondatabound и укажите, какой индекс вы хотите выбрать = true, вы захотите его обернуть в "if not page.isPostBack then..".. "хотя

Protected Sub DepartmentDropDownList_DataBound(ByVal sender As Object, ByVal e As    System.EventArgs) Handles DepartmentDropDownList.DataBound
    If Not Page.IsPostBack Then
        DepartmentDropDownList.SelectedValue = "somevalue"
    End If
End Sub

Ответ 7

Привет друг, в этом случае вы можете использовать

AppendDataBound="true"

и после этого используйте элемент списка. например,

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="--Select One--" Value="" />   
</asp:DropDownList>

но проблема в том, что после второго выбора времени данные добавляются со старыми данными.

Ответ 8

dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");