2009-10-21 32 views
9

Durante la carga de la página, el índice 0 ya estaba seleccionado. Índice entonces esta instrucción de código seleccionado 1:System.Web.HttpException: No se pueden seleccionar varios elementos en DropDownList

dropDownList.Items.FindByValue(myValue).Selected = true; 
// assume myValue is found at index 1 of dropDownList.Items 

Al término de carga de la página, la página se lee: "System.Web.HttpException: No se puede tener múltiples elementos seleccionados en un DropDownList."

¿Por qué recibí la excepción? ¿Y cómo puedo solucionarlo?

+0

¿Qué parte del mensaje de excepción no entendiste? –

+1

Entendí el contenido de la excepción. Sin embargo, no entendí por qué ocurrió. Luego lo descubrí. Vea mi respuesta siguiente –

Respuesta

37

Me di cuenta de que tanto el índice 0 como el índice 1 tenían las propiedades "Seleccionadas" establecidas en verdadero (dropDownList.Items [0] .Selected y dropDownList.Items [1] .Selected both were true). Sin embargo, dropDownList.SelectedIndex todavía era 0, aunque el índice 1 se estableció más recientemente.

Intenté resolver esto borrando la lista de selección de antemano.

dropDownList.ClearSelection(); 
dropDownList.Items.FindByValue(myValue).Selected = true; 

Pero eso no sirvió de nada. La misma excepción ocurrió.

Lo que sí ayudó, estaba poniendo el valor seleccionado de otra manera:

dropDownList.SelectedIndex = dropDownList.Items.IndexOf(dropDownList.Items.FindByValue(myValue)); 

ahora los propogates cambio de selección a través de la lista.

Por lo tanto, no utilice dropDownList.Items [x] = .Selected verdadero/falso para cambiar el valor seleccionado de un DropDownList. En su lugar, use dropDownList.SelectedIndex = x;

+1

Alternativamente puede usar 'ddl.Selected = val', que es una variación más fácil que yo prefiero. Además, asegúrese de que los datos estén vinculados a su 'DropDownList' antes de seleccionar el valor deseado. Esto también puede causar este error al intentar seleccionar un valor de un ddl que aún no se ha rellenado. Lo logré con un simple 'If ddl.Items.Count < 1 Then' ->' ddl.DataBind() '. Estoy seguro de que esto no es ideal, pero es una solución rápida conveniente al menos. :) – Chiramisu

16

acabo de tener este problema, y ​​descubrí que fue causada por algo diferente. I estaba añadiendo el mismo ListItem ejemplo a múltiples menús desplegables:

ListItem item = new ListItem("Foo", "1"); 
ListItem item2 = new ListItem("Bar", "2"); 
ddl1.Items.Add(item); 
ddl2.Items.Add(item); 
ddl1.Items.Add(item2); 
ddl2.Items.Add(item2); 

a continuación, establecer el SelectedValue:

ddl1.SelectedValue = "1"; //sets the Selected property of item 
ddl2.SelectedValue = "2"; //sets the Selected property of item2 

de conmutación a la adición de casos separados de ListItem solucionado el problema.

Mi conjetura es que cuando se establece el SelectedValue del DropDownList, se establece la propiedad Selected en la apropiada ListItem en su colección Items. Entonces, en este caso, al final del segundo bloque de código, ambos elementos se seleccionan en ambos menús desplegables.

+0

ESTE es el escenario que me atrapó. Estaba agregando el mismo ListItem a los múltiples controles de lista desplegable. Tengo que vincular un objeto de elemento de lista único a cada control exclusivo de lista desplegable. – paparush

+0

Esto me ayudó también. Love stackoverflow ;-) – Sardaukar

+0

Gracias Jefferson, estaba haciendo lo mismo. Obtuve ayuda de esto. –

0

Tuve un problema similar pero bajo un escenario ligeramente diferente. Pensé que debería publicarlo y la resolución aquí, ya que puede ayudar a alguien a ahorrar tiempo si se encuentran en mi situación similar.

En primer lugar el mensaje de error:

AMError: Sys.WebForms.PageRequestManagerServerErrorException: 
Sys.WebForms.PageRequestManagerServerErrorException: 
Cannot have multiple items selected in a DropDownList. 

Mi Escenario:

que estaba usando usando VisualStudio 2010 al paso a través de la aplicación (ASP VB Net) cuando me encontré con el problema. Miré el 2 dropdownlists en la página, revisé Internet y perdí varias horas sin resolución.

Resolución:

Entonces tuve feedup y salió VS 2010 y se tomó un descanso.Cuando regrese. Volví a usar la aplicación y no hubo ningún problema. Fue entonces cuando me di cuenta de mi error costoso: ¡había configurado una expresión que configuraba el SelectedValue en la ventana del reloj del depurador! De ahí la multiplicidad!

Quité la expresión y todo estaba bien de nuevo --- Visual Studion 2010 capaz de pasar la sección dropdownlist en la otra área de enfoque de la aplicación.

Cuestiones relacionadas