Asp.net-在下拉列表顶部添加空白项


128

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

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

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

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


Answers:


274

绑定数据后:

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

或者,您可以实例化一个ListItem,将其Selected属性设置为true,然后如上所述将其插入到drpList中。
skia.heliou

3
这可能会帮助那些寻找答案来使用sqlDataSource数据的人。 对于我来说,我还必须添加drpList.AppendDataBoundItems = true;。将其绑定到Page_Load方法中的当前数据
sabastienfyrre

29

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

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

1
VS不喜欢<br />标签,没有它,它对我有用。这是一个干净的选择,我不知道为什么它没有更多的票。
托尼L.

像魅力一样工作。感谢您的设计时间解决方案。
DataCat Robin

3
不要忘记设置Selected =“ true”
Fandango68

24

数据绑定是在添加空白列表项之后进行的,它将替换已有的列表项,您需要将空白项从控制器添加到列表的开头,或者在数据绑定后添加。

编辑:

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

有关详细信息,请参见

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

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


4
有人认为您需要提防的是,每次回发后都要通过不断添加相同的数据来增加下拉列表的数量。
基思·西蒙斯

空白项目不在那里,还是在那里但未被选中?
拂尘

如果您在.aspx标记中包含空白,然后将其绑定在后面的代码中,则此方法有效。
John Sheehan

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

7

就像“ Whisk” said一样,窍门在“ 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;
    }
}

谢谢“打扫”


5

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

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

3

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


当我这样做时,空白行显示在底部。
赛义夫汗

您可以指定要插入的索引。看一下JasonS的解决方案。
AndyG

@ [Saif Khan]:如果不起作用,请将空白行插入您的数据源,然后进行数据绑定
Steven A. Lowe


1

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

步骤1:

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"));

(测试通过)


0

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

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

回顾过去,我不推荐这种方法,只是作为一种替代方法。我出于灵活性考虑而喜欢该事件(OnDataBound =“ mydropdown_DataBound”),但是在我当前的情况下,为简单起见,我采用了(AppendDataBoundItems =“ true”)。
CINCHAPPS 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.