Как установить начальное значение выпадающего списка databound в ASP.NET?
Например, я хочу значения, но первое значение для отображения должно быть - Выберите One ---, с нулевым значением.
Как установить начальное значение выпадающего списка databound в ASP.NET?
Например, я хочу значения, но первое значение для отображения должно быть - Выберите One ---, с нулевым значением.
Я думаю, что вы хотите сделать это:
<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>
Я знаю, что это старо, но сочетание этих идей приводит к очень изящному решению:
Сохранять все настройки свойств по умолчанию для 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 или даже помещен в универсальную библиотеку утилиты для всех ваших проектов.
То, что я делаю, задает свойство text выпадающего списка ПОСЛЕ того, как я его привязываю. Что-то вроде этого:
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", а не пытается беспокоиться о выбранномIndex (что, если в таблицу данных добавлен другой элемент - я не хочу перекодировать)
Чтобы выбрать значение из раскрывающегося списка, используйте индекс следующим образом:
если мы имеем
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
вы бы использовали:
DropDownList1.Items[DropDownList1.SelectedIndex].Value
это вернет значение для выбранного индекса.
Добавьте элемент и установите его свойство "Выбранное" равным 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
Привет друг, в этом случае вы можете использовать
AppendDataBound="true"
и после этого используйте элемент списка. например,
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
но проблема в том, что после второго выбора времени данные добавляются со старыми данными.
dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");