如何在 ASP.NET 中设置数据绑定下拉列表的初始值?
例如,我想要这些值,但要显示的第一个值应该是 -- Select One ---,具有空值。
如何在 ASP.NET 中设置数据绑定下拉列表的初始值?
例如,我想要这些值,但要显示的第一个值应该是 -- Select One ---,具有空值。
我想你想要做的是:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
确保“AppendDataBoundItems”设置为true,否则在绑定数据时将清除“--Select One--”列表项。
如果您将下拉列表的“AutoPostBack”属性设置为true,您还必须将“CausesValidation”属性设置为true ,然后使用“RequiredFieldValidator”确保“--Select One--”选项不存在'不会导致回发。
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator>
我知道这是旧的,但这些想法的组合导致了一个非常优雅的解决方案:
保留 DropDownList 的所有默认属性设置(AppendDataBoundItems=false,Items 为空)。然后像这样处理 DataBound 事件:
protected void dropdown_DataBound(object sender, EventArgs e)
{
DropDownList list = sender as DropDownList;
if (list != null)
list.Items.Insert(0, "--Select One--");
}
锦上添花的是,这个处理程序可以由任意数量的 DropDownList 对象共享,甚至可以放入所有项目的通用实用程序库中。
我所做的是在我数据绑定之后设置下拉列表的文本属性。像这样的东西:
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”值加载,而不是试图担心 selectedIndex(如果将另一个项目添加到数据表中 - 我不想重新编码)
要从下拉列表中选择一个值,请使用如下索引:
如果我们有
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
你会使用:
DropDownList1.Items[DropDownList1.SelectedIndex].Value
这将返回所选索引的值。
嗨,朋友,在这种情况下,您可以使用
AppendDataBound="true"
然后使用列表项。例如:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
但问题是在第二次选择数据附加旧数据之后。
添加一个项目并将其“Selected”属性设置为true,您可能还希望将“appenddatabounditems”属性设置为true,以便在数据绑定时不会删除您的初始值。
如果您正在谈论设置数据绑定项目中的初始值,然后挂钩您的 ondatabound 事件并设置您想要选择的索引=true,您将希望将其包装在“如果不是 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
dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");