28

如何在 ASP.NET 中设置数据绑定下拉列表的初始值?

例如,我想要这些值,但要显示的第一个值应该是 -- Select One ---,具有空值。

4

8 回答 8

65

我想你想要做的是:

<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>
于 2009-02-06T19:01:18.790 回答
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 对象共享,甚至可以放入所有项目的通用实用程序库中。

于 2010-08-13T18:20:40.790 回答
2

我所做的是在我数据绑定之后设置下拉列表的文本属性。像这样的东西:

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

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

这使得该下拉列表的初始可见值显示出来,但实际上不是下拉列表的一部分,也不是可选的。

于 2009-02-06T19:17:33.453 回答
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(如果将另一个项目添加到数据表中 - 我不想重新编码)

于 2009-05-29T15:38:11.480 回答
1

要从下拉列表中选择一个值,请使用如下索引:

如果我们有

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

你会使用:

DropDownList1.Items[DropDownList1.SelectedIndex].Value

这将返回所选索引的值。

于 2011-02-05T12:58:26.427 回答
1

嗨,朋友,在这种情况下,您可以使用

AppendDataBound="true"

然后使用列表项。例如:

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

但问题是在第二次选择数据附加旧数据之后。

于 2016-08-31T04:50:29.620 回答
0

添加一个项目并将其“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
于 2009-02-06T17:48:49.733 回答
-1
dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");
于 2016-08-05T05:11:33.870 回答