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 下拉列表项会导致页面回发错误
如何在 C# 中为枚举值添加描述以与 ASP.NET MVC 中的下拉列表一起使用? [复制]