数据绑定下拉列表 - 初始值

时间:2009-02-06 17:44:47

标签: asp.net vb.net drop-down-menu

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

例如,我想要值,但要显示的第一个值应该是 - 选择一个---,使用空值。

8 个答案:

答案 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");