2009-02-06 2 views

ответ

62

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

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

Убедитесь в том, что„AppendDataBoundItems“установлен в истинной или иначе вы снимите«- Выберите «Один ...», когда вы привязываете свои данные.

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

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

Thankyou, это именно то, что я искал. :-) +1 –

+0

Это очень полезно. – Denis

+0

Простой, быстрый и легкий. Хороший ответ. –

0

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

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

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 
2

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

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

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

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

2

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

<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» вместо того, чтобы беспокоиться о selectIndex (что, если в таблицу данных добавлен другой элемент - я не хочу переписывать код)

11

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

Сохраните все настройки свойств по умолчанию для 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, или даже поместить в общего назначения библиотеки полезной для всех ваших проектов.

+0

Куда назвать этот метод? –

+1

@iQue вы можете установить это как событие OnDataBound для своего DropDownList. Я думаю, что это намного лучше, чем принятый ответ, так как нет проблем при изменении DataSource и мы повторно DataBind; с принятым ответом, re-DataBinding просто добавит элементы в существующий список (который _could_ был тем, что вы хотите, но, скорее всего, это не то, что вы хотите). –

1

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

если мы имеем

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

вы будете использовать:

DropDownList1.Items[DropDownList1.SelectedIndex].Value 

это будет возвращать значение для выбранный индекс.

0

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

AppendDataBound="true" 

и после этого использовать элемент списка. для например .:

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

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

Смежные вопросы