c# asp.net .net

c# - No se pueden seleccionar mĂșltiples elementos en DropDownList



asp.net .net (8)

** Si está comprobando que el índice seleccionado de la lista desplegable debe ser mayor que 0. Entonces debe verificarlo como si (ddlPlayer1.SelectedIndex> 0 || ddlPlayer2.SelectedIndex> 0) {}

Creo que el error viene a usar "DropDownList1.SelectedItem.Value".

Tengo dos listas desplegables y un botón. Usé el punto de interrupción en mi proyecto y todo está funcionando bien. Pero en cuanto estoy saliendo de la función del botón, este es el error que estoy obteniendo:

No se pueden seleccionar múltiples elementos en 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 no vincular múltiples ddls a la misma fuente de datos. Ser seleccionado es un atributo de un artículo, por lo tanto, si diferentes ddls seleccionan diferentes elementos del mismo origen de datos, cada uno de los ddls termina con varios elementos seleccionados, que probablemente sea lo que está sucediendo aquí.


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); establece newItem.Selected = True . Sin la línea newItem = new ListItem(); , obtiene el error porque el indicador seleccionado ahora es verdadero en ambos elementos agregados al ddl.


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

Uno de los ítems fue "por favor escoja uno ...", y el segundo fue "No listado 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 intenté 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 se ha ido ...


Este código resolverá este problema:

YourDropDownId.ClearSelection();


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 previa de su ddl de la siguiente manera:

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

O puede hacer lo siguiente:

ddl.SelectedItem = "parameter";

Espero poder ayudar a alguien ;-)


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

Usar ddl.SelectedValue = "value" también resolverá el error del OP.


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