# drop down menu – Asp.net – Add blank item at top of dropdownlist

## The Question :

130 people think this question is useful

Why is the dropdown not showing my blank item first? Here is what I have

drpList.Items.Add(New ListItem("", ""))

With drpList
.DataSource = myController.GetList(userid)
.DataTextField = "Name"
.DataValueField = "ID"
.DataBind()
End With



Edit ~ I am binding to a Generig List, could this be the culprit?

277 people think this answer is useful

drpList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
drpList.SelectedIndex = 0;



31 people think this answer is useful

You can use AppendDataBoundItems=true to easily add:

<asp:DropDownList ID="drpList" AppendDataBoundItems="true" runat="server"><br/>
<asp:ListItem Text="" Value="" /><br/>
</asp:DropDownList>



24 people think this answer is useful

The databinding takes place after you’ve added your blank list item, and it replaces what’s there already, you need to add the blank item to the beginning of the List from your controller, or add it after databinding.

EDIT:

After googling this quickly as of ASP.Net 2.0 there’s an “AppendDataBoundItems” true property that you can set to…append the databound items.

for details see

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx

13 people think this answer is useful

I think a better way is to insert the blank item first, then bind the data just as you have been doing. However you need to set the AppendDataBoundItems property of the list control.

We use the following method to bind any data source to any list control…

public static void BindList(ListControl list, IEnumerable datasource, string valueName, string textName)
{
list.Items.Clear();
list.AppendDataBoundItems = true;
list.DataValueField = valueName;
list.DataTextField = textName;
list.DataSource = datasource;
list.DataBind();
}



8 people think this answer is useful

Like “Whisk” Said, the trick is in “AppendDataBoundItems” property

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DropDownList1.AppendDataBoundItems = true;
DropDownList1.Items.Insert(0, new ListItem(String.Empty, String.Empty));
DropDownList1.SelectedIndex = 0;
}
}



Thanks “Whisk”

5 people think this answer is useful

Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)



3 people think this answer is useful

it looks like you are adding a blank item, and then databinding, which would empty the list; try inserting the blank item after databinding

3 people think this answer is useful

simple

at last

ddlProducer.Items.Insert(0, "");



1 people think this answer is useful

ddlCategory.DataSource = ds;
ddlCategory.DataTextField = "CatName";
ddlCategory.DataValueField = "CatID";

Cách 1:

ddlCategory.Items.Add(new ListItem("--please select--", "-1"));
ddlCategory.AppendDataBoundItems = true;
ddlCategory.SelectedIndex = -1;

ddlCategory.DataBind();

Cách 2:

ddlCategory.Items.Insert(0, new ListItem("-- please select --", "0"));

(Tested OK)

select '' value, '' name