隐藏或删除下拉列表中的重复选项

时间:2018-07-25 17:57:03

标签: c# html css asp.net

我正在使用WebForms。在我的表单中,我有一个dropdownlist控件。有时Select选项在我的位置被添加了两次。如何删除此重复选项或将其隐藏?

我试图计算添加了Select个选项的次数,然后将其隐藏,但没有成功。

之所以将其添加两次是因为grdview_Color_DataBound被调用了两次。

enter image description here

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

2 个答案:

答案 0 :(得分:1)

您需要将AppendDataBoundItems属性设置为true,以保留DDL中的现有值。您还需要确保您不会在每次回发时都这样做-您的代码示例不会在Page_Load()方法中显示是否以及如何执行此操作。

答案 1 :(得分: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);
    }
}

当然,这种方法不是最好的方法,但是如果您急忙的话,这是一种方法。