Как установить начальное значение выпадающего списка databound в ASP.NET?Выпадающий список Databound - начальное значение
Например, я хочу значения, но первое значение для отображения должно быть: - Выберите один ---, с нулевым значением.
Как установить начальное значение выпадающего списка databound в ASP.NET?Выпадающий список Databound - начальное значение
Например, я хочу значения, но первое значение для отображения должно быть: - Выберите один ---, с нулевым значением.
Я думаю, что вы хотите сделать это:
<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>
Добавить элемент и присвоить его свойству «Выбранное» значение 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
То, что я делаю, устанавливается в текстовом свойстве выпадающего списка ПОСЛЕ того, как я его привязываю. Что-то вроде этого:
protected void LoadPersonComboBox()
{
var p = new PeopleBLL();
rcmbboxEditPerson.DataSource = p.GetPeople();
rcmbboxEditPerson.DataBind();
rcmbboxEditPerson.Text = "Please select an existing person to edit...";
}
Это делает начальное видимым значение этого выпадающего меню появляется, но на самом деле не быть частью падения вниз, и это не выбор.
Я знаю, что у этого уже есть выбранный ответ - но я хотел бросить в свои два цента. У меня есть список с привязкой к данным выпадающий:
<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 (что, если в таблицу данных добавлен другой элемент - я не хочу переписывать код)
Я знаю, что это устарело, но сочетание этих идей приводит к очень элегантное решение:
Сохраните все настройки свойств по умолчанию для 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, или даже поместить в общего назначения библиотеки полезной для всех ваших проектов.
Куда назвать этот метод? –
@iQue вы можете установить это как событие OnDataBound для своего DropDownList. Я думаю, что это намного лучше, чем принятый ответ, так как нет проблем при изменении DataSource и мы повторно DataBind; с принятым ответом, re-DataBinding просто добавит элементы в существующий список (который _could_ был тем, что вы хотите, но, скорее всего, это не то, что вы хотите). –
Чтобы выбрать значение из выпадающего списка использовать индекс, как это:
если мы имеем
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
вы будете использовать:
DropDownList1.Items[DropDownList1.SelectedIndex].Value
это будет возвращать значение для выбранный индекс.
dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");
привет друг в этом случае вы можете использовать
AppendDataBound="true"
и после этого использовать элемент списка. для например .:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
но проблема в это после того, как второй раз выберите данные присоединять со старыми данными.
Thankyou, это именно то, что я искал. :-) +1 –
Это очень полезно. – Denis
Простой, быстрый и легкий. Хороший ответ. –