Asp.net-在dropdownlist顶部添加空白项

Asp.net-在dropdownlist顶部添加空白项,asp.net,drop-down-menu,Asp.net,Drop Down Menu,为什么下拉列表不首先显示我的空白项?这是我的 drpList.Items.Add(New ListItem("", "")) With drpList .DataSource = myController.GetList(userid) .DataTextField = "Name" .DataValueField = "ID" .DataBind() End With 编辑~我正在绑定到一个常规列表,这可能是罪魁祸首吗?看起来您正在添加一个空白项,然后进行数

为什么下拉列表不首先显示我的空白项?这是我的

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

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

编辑~我正在绑定到一个常规列表,这可能是罪魁祸首吗?

看起来您正在添加一个空白项,然后进行数据绑定,这将清空列表;尝试在数据绑定

< p>插入空白项目。在添加了空白列表项之后,数据绑定发生了,它替换了已经存在的内容,需要将空白项添加到列表的起始处,或者在数据绑定之后添加。 编辑:

从ASP.NET2.0开始快速搜索后,有一个“AppendDataBoundItems”true属性,可以设置为…追加数据绑定项

详情请参阅


执行数据绑定,然后添加以下内容:

Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)
在数据绑定之后:

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

我认为更好的方法是先插入空白项目,然后像以前一样绑定数据。但是,您需要设置列表控件的
AppendDataBoundItems
属性

我们使用以下方法将任何数据源绑定到任何列表控件

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();
}
正如“Whisk”所说,诀窍在于“AppendDataBoundItems”属性

谢谢你的“搅拌”

简单

终于

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

您可以使用
AppendDataBoundItems=true
轻松添加:

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

ddlcontegory.DataSource=ds
ddlcontegory.DataTextField=“CatName”
ddlcontegory.DataValueField=“CatID”

Cách 1:

ddlcography.Items.Add(新列表项(“--请选择-”,“-1”)
ddlcegory.AppendDataBoundItems=true
ddlcegory.SelectedIndex=-1

ddlcegory.DataBind()

第二章:

ddlcography.Items.Insert(0,新列表项(“--请选择--”,“0”))


<强>(测试OK)

< p>您也可以将空白选择与具有内容的SELECT结合:

select '' value, '' name
union
select value, name from mytable

当我这样做时,空白行出现在底部。您可以指定要插入的索引。看看JasonS的解决方案。@ [ Saif Khan ]:如果这不起作用,将空白行插入到数据源中,那么DATABINDING认为您需要注意的是,在每次回发之后,通过附加相同的数据一遍遍地增加下拉列表。空白项目不在那里,如果你在你的.ASPX标记中有一个空白,然后绑定在代码后面。这涉及:回首,我不推荐这个方法,只是作为替代。出于灵活性的考虑,我喜欢事件(OnDataBound=“mydropdown\u DataBound”),但在我目前的情况下,为了简单起见,我采用了(AppendDataBoundItems=“true”)。VS不喜欢
标记,它在没有它的情况下对我有效。这是一个如此干净的选择,我不知道为什么它没有更多的选票。就像一个魅力。感谢设计时解决方案。别忘了设置Selected=“true”或者,您可以实例化一个ListItem,将其Selected属性设置为true,然后如上所述将其插入到drpList中。这可能会帮助那些寻找使用sqlDataSource数据的答案的人。在我的情况下,我还必须添加drpList.AppendDataBoundItems=true;将其绑定到Page_Load方法中的当前数据
select '' value, '' name
union
select value, name from mytable