2011-02-28 18 views
32

Tengo dos listas desplegables y un botón. Usé el punto de interrupción en mi proyecto y todo está funcionando bien. Pero tan pronto Estoy saliendo de la función del botón Éste es el error que estoy recibiendo:No se pueden seleccionar varios elementos en DropDownList

Cannot have multiple items selected in a 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(); 
    } 

lo que estoy haciendo mal aquí?

+0

Además de las respuestas publicadas aquí, encontré otra causa posible para este error. Vea mi respuesta [aquí] (http://stackoverflow.com/a/9236671/412107) a [esta pregunta] (http://stackoverflow.com/q/1603506/412107). –

Respuesta

45

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

+10

Esto también ocurre en DropDownList unbound si agrega el mismo ListItem a más de un ddl. – Laramie

+1

Gracias @Laramie, eso es exactamente lo que hice. Creé un elemento de la lista "Seleccione" y lo agregué a cada menú desplegable. Eso parece confundir el sitio. Volver a crearlo para cada menú desplegable hizo el truco –

+0

¡Gracias @Laramie, también corrigió mi problema! Tenía mi elemento de la lista "por favor seleccione ..." en una biblioteca de "utilidad", ahora lo uso como un programa de acceso con solo el 'obtener' definido, usando 'nuevo' dentro para cada solicitud. – Nnoel

-1

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

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

+0

¡Nops! Yo lo hice. Mismo error Deepak. –

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


     } 

    } 
93

Normalmente esto error se produce cuando se carga el 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 se puede hacer de la siguiente manera:

ddl.SelectedItem = "parameter"; 

espero que pudiera ayudar a alguien. ;-)

+0

propiedad .SelectedItem no tiene setter. .NET 3.5 ... –

+3

¡ClearSelection() era lo que necesitaba! – Kristopher

+0

No puede usar: ddl.SelectedItem = "parameter"; porque SelectedItem es de solo lectura (para ser más precisos, es una propiedad y el framework expone solo el accessor get) – Alberto

16

Este código va a resolver este problema:

YourDropDownId.ClearSelection(); 
2

yo estaba tratando de añadir otros dos elementos de la lista que al principio de la lista de la DropDownList 's después de leer datos en el DropDownList.

Uno de los ítems era "elija uno ...", y el segundo "No aparece aquí ...". Así que han creado un elemento de la lista:

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

entonces he tratado de añadir estos dos ListItems a los tres DropDownList. Después de eso, he encontrado el mismo error.

Después de crear nuevas instancias para cada ListItem DropDownList, el problema se ha ido ...

0

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.

0

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

Cuestiones relacionadas