2009-07-02 129 views
4

如何将DropDownList中的第一项置于空白处?在VB中是这样的,DropDownList.index [0] =“”; 我这样做:Dropdownlist中的第一项空白

string StrConn = ConfigurationManager.ConnectionStrings["connSql"].ConnectionString; 
    SqlConnection conn = new SqlConnection(StrConn); 

    conn.Open(); 

    SqlDataReader dr; 

    string sql; 
    sql = @"Select Nome From DanielPessoas"; 

    SqlCommand cmd = new SqlCommand(sql, conn); 
    dr = cmd.ExecuteReader(); 

    DropDownList1.DataSource = dr; 
    DropDownList1.DataTextField = "Nome"; 
    DropDownList1.DataValueField = "Nome"; 
    DropDownList1.DataBind(); 

回答

13

在您的DataBind调用后,添加此代码。

DropDownList1.Items.Insert(0, new ListItem(string.Empty, string.Empty)); 
+0

打我吧。我建议的唯一的事情是为空白选择设置一些值,以便验证或选择值检查更容易。 – 2009-07-02 16:37:28

+1

如果您使用string.empty /“”作为值,那么您可以使用RequiredFieldValidator。不过,我会建议在“Select ...”这样的文本字段中加入一些东西。 – 2009-07-02 16:40:04

1

做这样的事情:这是一个简单的例子

<asp:DropDownList ID="ddlFruits" runat="server"> 

     <asp:ListItem Value="1" Text="Oranges"></asp:ListItem> 
     <asp:ListItem Value="2" Text="Apples"></asp:ListItem> 
     <asp:ListItem Value="3" Text="Grapes"></asp:ListItem> 
     <asp:ListItem Value="4" Text="Mangoes"></asp:ListItem> 
    </asp:DropDownList> 

而且在后面

ddlFruits.Items.Insert(0, new ListItem(string.Empty, "0")); 
0

的代码,你可以做到这一点在SQL:

sql = @"Select Nome From DanielPessoas UNION ALL Select '' Order by Nome"; 
1

你可以这样做:

dropdownlist1.Items.Insert(0, new ListItem("Select here...", string.Empty)); 
7

如果将AppendDataBoundItems属性设置为true,则可以在aspx文件中定义空项目。

<asp:DropDownList ID="ddlPersons" runat="server" AppendDataBoundItems="true" DataValueField="ID" DataTextField="Name"> 
    <asp:ListItem> -- please select person -- </asp:ListItem> 
</asp:DropDownList> 

然后你就可以在代码隐藏数据绑定从数据库项目:

ddlPersons.DataSource = personsList; 
ddlPersons.DataBind(); 

我认为这种“空项目”作为演示/ UI,所以我喜欢把它放在ASPX。它还使代码隐藏更简单。