No se pueden tener varios elementos seleccionados en un DropDownList

Tengo dos listas desplegables y un botón. Utilicé el punto de interrupción en mi proyecto y todo funciona bien. Pero tan pronto como salgo de la función del botón, este es el error que obtengo:

No se pueden tener varios elementos seleccionados en un DropDownList.

Aquí está mi código para ese botón:

protected void Button1_Click(object sender, EventArgs e) { if (ddlPlayer1.SelectedItem.Value != "0" || ddlPlayer2.SelectedItem.Value != "0" && ddlPlayer1.SelectedItem.Value != ddlPlayer2.SelectedItem.Value) { lblPlayer1Score.Text = Repository.Instance.ReturnScore(ddlPlayer1.SelectedValue.ToString(), ddlPlayer2.SelectedValue.ToString()).Rows[0][0].ToString(); lblPlayer2Score.Text = Repository.Instance.ReturnScore(ddlPlayer2.SelectedValue.ToString(), ddlPlayer1.SelectedValue.ToString()).Rows[0][0].ToString(); } ddlPlayer1.DataBind(); ddlPlayer2.DataBind(); } 

¿Qué estoy haciendo mal aquí?

Asegúrese de que no está enlazando varios ddls al mismo origen de datos. Ser seleccionado es un atributo de un elemento, por lo tanto, si diferentes ddls seleccionan diferentes elementos de la misma fuente de datos, cada uno de los ddls termina con múltiples elementos seleccionados, que es probablemente lo que está sucediendo aquí.

Por lo general, este error se produce cuando carga su ddl de la siguiente manera:

 ddl.FindByValue("parameter").Selected = true; 

Para superar este error, debe borrar la selección anterior de su ddl de la siguiente manera:

 ddl.ClearSelection(); ddl.FindByValue("parameter").Selected = true; 

O puedes hacer lo siguiente:

 ddl.SelectedItem = "parameter"; 

Espero poder ayudar a alguien. 😉

Este código resolverá este problema:

 YourDropDownId.ClearSelection(); 

Estaba intentando agregar otros dos elementos de la lista a la parte superior de la lista DropDownList después de leer los datos en la lista DropDownList .

Uno de los elementos fue “elija uno …”, y el segundo fue “No se encuentra aquí …”. Así que he creado un elemento de lista:

 ListItem li1 = new ListItem("please pick one...", "999"); ListItem li2 = new ListItem("not listed here...", "555"); 

Luego traté de agregar estos dos ListItems a los tres DropDownList . Después de eso he encontrado el mismo error.

Después de crear nuevas instancias de ListItem para cada DropDownList , el problema desapareció …

  protected void Button1_Click(object sender, EventArgs e) { if (ddlPlayer1.SelectedIndex>0 || ddlPlayer2.SelectedIndex>0) { lblPlayer1Score.Text = Repository.Instance.ReturnScore(ddlPlayer1.SelectedValue.ToString(), ddlPlayer2.SelectedValue.ToString()).Rows[0][0].ToString(); lblPlayer2Score.Text = Repository.Instance.ReturnScore(ddlPlayer2.SelectedValue.ToString(), ddlPlayer1.SelectedValue.ToString()).Rows[0][0].ToString(); } } 

Una respuesta anterior menciona ddl.SelectedItem = "parameter"; como una opción. Sin embargo, SelectedItem es de solo lectura.

El uso de ddl.SelectedValue = "value" también resolverá el error del OP.

Encontré otra forma de obtener el error:

  ddlFromBudget.Items.Clear(); ListItem newItem = new ListItem(); newItem.Text = "Not Set"; newItem.Value = "0"; ddlFromBudget.Items.Add(newItem); if (ddlB1.SelectedValue.ToString() != "0") { newItem = new ListItem(); newItem.Text = ddlB1.SelectedItem.ToString(); newItem.Value = "1"; ddlFromBudget.Items.Add(newItem); } 

La línea ddlFromBudget.Items.Add(newItem); sets newItem.Selected = True . Sin la línea newItem = new ListItem(); , obtienes el error porque la marca seleccionada ahora es verdadera en ambos elementos agregados al ddl.

** Si está verificando que ambos índices de la lista desplegable deben ser más altos que 0. Luego debe verificar si: (ddlPlayer1.SelectedIndex> 0 || ddlPlayer2.SelectedIndex> 0) {}

Creo que el error viene a usar “DropDownList1.SelectedItem.Value”.