133

为什么下拉菜单没有首先显示我的空白项?这是我所拥有的

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

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

编辑〜我绑定到一个通用列表,这可能是罪魁祸首吗?

4

10 回答 10

281

数据绑定后:

drpList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
drpList.SelectedIndex = 0;
于 2008-11-05T23:05:45.557 回答
33

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

<asp:DropDownList ID="drpList" AppendDataBoundItems="true" runat="server">
    <asp:ListItem Text="" Value="" />
</asp:DropDownList>
于 2012-11-28T02:57:16.520 回答
25

数据绑定发生在您添加空白列表项之后,它会替换已经存在的内容,您需要从控制器将空白项添加到列表的开头,或者在数据绑定之后添加。

编辑:

从 ASP.Net 2.0 开始快速搜索后,有一个“AppendDataBoundItems”true 属性,您可以将其设置为...附加数据绑定项。

详情见

http://imar.spaanjaars.com/QuickDocId.aspx?quickdoc=281

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

于 2008-11-05T23:02:59.197 回答
13

我认为更好的方法是先插入空白项,然后像你一直在做的那样绑定数据。但是,您需要设置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();
}
于 2009-03-18T17:36:56.030 回答
8

就像“Whisk”所说,诀窍在于“AppendDataBoundItems”属性

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;
    }
}

感谢“扫一扫”

于 2010-10-30T20:14:05.380 回答
5

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

Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)
于 2008-11-05T23:04:49.180 回答
3

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

于 2008-11-05T23:01:37.377 回答
3

简单的

终于

ddlProducer.Items.Insert(0, "");
于 2012-05-08T12:50:26.117 回答
1

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

第一关:

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

ddlCategory.DataBind();

缓存 2:

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

(测试正常)

于 2013-04-24T08:10:20.233 回答
0

您还可以将空白选择与具有内容的选择结合起来:

select '' value, '' name
union
select value, name from mytable
于 2015-03-02T21:53:28.893 回答