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

Posted

技术标签:

【中文标题】Asp.net - 在下拉列表顶部添加空白项【英文标题】:Asp.net - Add blank item at top of dropdownlist 【发布时间】:2010-09-20 23:47:14 【问题描述】:

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

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

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

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

【问题讨论】:

这涉及到:***.com/questions/983716/… 【参考方案1】:

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

【讨论】:

当我这样做时,空白行出现在底部。 您可以指定要插入的索引。看看 JasonS 的解决方案。 @[Saif Khan]:如果这不起作用,请将空白行插入数据源,然后进行数据绑定【参考方案2】:

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

编辑:

从 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

【讨论】:

一个认为您需要注意的是,通过一遍又一遍地附加相同的数据,您的下拉列表会在每次回发后增长。 是空白项不存在,还是存在但未选中? 如果您的 .aspx 标记中有空白,然后绑定在后面的代码中,这将起作用。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

数据绑定后:

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

【讨论】:

另外,您可以实例化一个 ListItem,将其 Selected 属性设置为 true,然后将其插入到 drpList 中。 这可能有助于那些寻找使用 sqlDataSource 数据的答案的人 在我的情况下,我还必须添加 drpList.AppendDataBoundItems = true;将其绑定到 Page_Load 方法中的当前数据【参考方案5】:

我认为更好的方法是先插入空白项,然后像你一直在做的那样绑定数据。但是您需要设置列表控件的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();

【讨论】:

【参考方案6】:

如“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;
    

感谢“打扫”

【讨论】:

【参考方案7】:

简单

终于

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

【讨论】:

【参考方案8】:

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

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

【讨论】:

VS 不喜欢 标签,没有它它对我有用。这是一个很干净的选项,我不知道为什么它没有更多的选票。 工作就像一个魅力。感谢您提供设计时解决方案。 别忘了设置 Selected="true"【参考方案9】:

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

(测试正常)

【讨论】:

【参考方案10】:

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

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

【讨论】:

回首往事,我不会推荐这种方法,除非只是作为一种替代方法。为了灵活性,我喜欢这个事件 (OnDataBound="mydropdown_DataBound"),但在我目前的情况下,为了简单起见,我采用 (AppendDataBoundItems="true")。

以上是关于Asp.net - 在下拉列表顶部添加空白项的主要内容,如果未能解决你的问题,请参考以下文章

从 JavaScript 添加 asp.net 下拉列表项会导致页面回发错误

jQuery将空白选项添加到列表顶部并选择现有下拉列表

如何在 C# 中为枚举值添加描述以与 ASP.NET MVC 中的下拉列表一起使用? [复制]

在asp.net的html表中添加下拉列表

使用 DataTable.js 在 asp.net gridview 中使用下拉列表按列过滤

如何在禁用的 asp.net 下拉列表中添加警报?