如何在ASP.NET中设置数据绑定下拉列表的初始值?
例如,我想要值,但要显示的第一个值应该是 - 选择一个---,使用空值。
答案 0 :(得分:64)
我认为你想要做的是:
<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>
答案 1 :(得分:11)
我知道这已经过时了,但这些想法的结合可以带来非常优雅的解决方案:
保留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对象共享,甚至可以放入所有项目的通用实用程序库中。
答案 2 :(得分:2)
我做的是在数据绑定后设置下拉列表的text属性。像这样:
protected void LoadPersonComboBox()
{
var p = new PeopleBLL();
rcmbboxEditPerson.DataSource = p.GetPeople();
rcmbboxEditPerson.DataBind();
rcmbboxEditPerson.Text = "Please select an existing person to edit...";
}
这使得此下拉列表的初始可见值显示,但实际上不是下拉列表的一部分,也不是可选择的。
答案 3 :(得分: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”值加载,而不是试图担心selectedIndex(如果将另一个项目添加到数据表中会怎样 - 我不想重新编码)
答案 4 :(得分:1)
要从下拉列表中选择值,请使用如下索引:
如果我们有
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
你会用:
DropDownList1.Items[DropDownList1.SelectedIndex].Value
这将返回所选索引的值。
答案 5 :(得分:1)
在这种情况下你好朋友可以使用
AppendDataBound="true"
之后使用列表项。 例如:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
但问题是在第二次选择数据附加旧数据之后。
答案 6 :(得分:0)
添加一个项目并将其“Selected”属性设置为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 :(得分:-1)
dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");