可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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?
回答1:
After your databind:
drpList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
drpList.SelectedIndex = 0;
回答2:
You can use AppendDataBoundItems=true
to easily add:
<asp:DropDownList ID="drpList" AppendDataBoundItems="true" runat="server"><br/>
<asp:ListItem Text="" Value="" /><br/>
</asp:DropDownList>
回答3:
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://imar.spaanjaars.com/QuickDocId.aspx?quickdoc=281 or
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx
回答4:
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.Items.Add("", "");
list.AppendDataBoundItems = true;
list.DataValueField = valueName;
list.DataTextField = textName;
list.DataSource = datasource;
list.DataBind();
}
回答5:
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"
回答6:
Do your databinding and then add the following:
Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)
回答7:
it looks like you are adding a blank item, and then databinding, which would empty the list; try inserting the blank item after databinding
回答8:
simple
at last
ddlProducer.Items.Insert(0, "");
回答9:
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)
回答10:
You could also have a union of the blank select with the select that has content:
select '' value, '' name
union
select value, name from mytable