隐藏或删除下拉列表中的重复选项
Posted
技术标签:
【中文标题】隐藏或删除下拉列表中的重复选项【英文标题】:Hide or Remove duplicate options in dropdownlist 【发布时间】:2019-01-02 15:15:53 【问题描述】:我正在使用WebForms
。在我的表单中,我有一个 dropdownlist
控件。有时Select
选项会在我的 from 中添加两次。如何删除此重复选项或隐藏它?
我尝试计算添加了多少次Select
选项然后隐藏它但没有成功。
之所以添加两次是因为grdview_Color_DataBound
被调用了两次。
<select name="ctl00$MainContent$grdview_Color$ctl10$ddl_Grd_Color" id="MainContent_grd_ddl_grdview_Color" class="form-control dropdown">
<option value="0" selected="selected" disabled="disabled">Select</option>
<option value="0" disabled="disabled">Select</option>
<option value="Yellow">Yellow</option>
<option value="Red">Red</option>
<option value="Blue">Blue</option>
<option value="Green">Green</option>
</select>
protected void grdview_Color_DataBound(object sender, EventArgs e)
ListItem firstItem = new ListItem("Select", "0");
firstItem.Attributes.Add("disabled", "disabled");
ddl.DataSource = dataSource;
ddl.DataTextField = TextField;
ddl.DataValueField = ValueField;
ddl.DataBind();
ddl.Items.Insert(0, firstItem);
【问题讨论】:
您正在尝试解决症状而不是问题。您应该弄清楚额外选项是如何进入列表的。 您需要显示您的标记以及您使用此代码的位置。 可能在数据绑定前清除ddl? 这不是原始标记 - 这是生成的标记。检查您使用的 aspx 或 ascx 文件。 我检查了 javascript 代码,发现有一段代码在附加 Select 选项并禁用它。谢谢你们的帮助:) 【参考方案1】:一种天真的方法是将下拉列表中的项目存储在某种容器中,例如列表。清除下拉项目,然后循环遍历您的容器,仅将唯一项目添加回下拉项目列表,如下所示:
// Save the items
savedItems = dropDownItems.Items;
// Clear The items
dropDownItems.Items.Clear();
// Go through the container adding unique items to the drop down list
foreach (string item in savedItems)
if (!dropDownItems.Items.Contains(item))
dropDownItems.Items.Add(item);
这种方式当然不是最好的方式,但是如果你赶时间的话,这是一种方式。
【讨论】:
【参考方案2】:您需要将AppendDataBoundItems 属性设置为true 以保留DDL 中的现有值。您还需要确保您没有在每次回发时都这样做 - 您的代码示例不会显示您是否以及如何在 Page_Load() 方法中执行此操作。
【讨论】:
我会调查 AppendDataBoundItems。谢谢以上是关于隐藏或删除下拉列表中的重复选项的主要内容,如果未能解决你的问题,请参考以下文章