我正在使用WebForms
。在我的表单中,我有一个dropdownlist
控件。有时Select
选项在我的位置被添加了两次。如何删除此重复选项或将其隐藏?
我试图计算添加了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);
}
答案 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);
}
}
当然,这种方法不是最好的方法,但是如果您急忙的话,这是一种方法。