¿Cuándo un DropDownList retiene el valor de la devolución de datos en el controlador de eventos SelectedIndexChanged?

Aclarar a todo este problema no se deriva en absoluto de la re-unión de los controles y el valor no permanece como el valor inicial después de la vinculación.

Tengo un DropDownList en una página aspx que se está utilizando en varios proyectos.

A lo largo del ciclo de vida de la página, SelectedValue se cambia antes del manejo del evento SelectedIndexChanged.

En un proyecto, cuando el código llega al controlador de eventos, SelectedValue vuelve a lo que se publicó desde el cliente, mientras que en el otro está presente el nuevo SelectedValue.

Viewstate está activado en ambos casos, el control no se recupera y sigue exactamente el mismo flujo de todo lo que puedo recopilar.

El control no se está inicializando nuevamente, lo verifiqué a fondo y no retiene el valor inicial sino el valor establecido en el código.

De hecho, necesito el valor publicado en el punto del controlador de eventos, como sucede en el primer proyecto, pero no entiendo por qué volvería al valor publicado y cómo replicar este comportamiento en el segundo proyecto.

Estaré encantado de aclarar más si algo de esto no está claro.

preguntado Oct 07 '08, 11:10

3 Respuestas

Tal vez se realice alguna inicialización dos veces en el evento on_load porque no verifica que la página se publique de nuevo usando IsPostAtrás en una prueba?

Le pasa exactamente a uno de mis compañeros hace diez minutos :-)

Respondido 07 Oct 08, 14:10

el control no se vuelve a vincular y la lógica no es relevante para una devolución de datos - yonahw

Mucha gente cree erróneamente que DropDownLists debe tener ViewState activado para poder retener el valor seleccionado. Casi nunca configuro EnableViewState en verdadero en DropDownLists porque funcionan bien en un formulario con los valores publicados. (Y establecerlo en verdadero en un control DataBinding causará un estado de vista largo)

El valor publicado (elemento seleccionado en el menú desplegable) se carga desde los parámetros posteriores después OnInit en la página, por lo que si vincula los datos al menú desplegable en OnInit, funcionará bien.

Si te unes en carga, el valor seleccionado se anulará.

¿Quizás está vinculando datos en el evento incorrecto para que el valor seleccionado sea anulado por una llamada de DataBind en el menú desplegable?

Respondido 07 Oct 08, 14:10

Tenía la impresión de que viewstate no era necesario, sin embargo, está ahí por el momento. Aunque estoy cambiando el valor seleccionado, no estoy volviendo a vincular el control y el código es exactamente el mismo en ambos proyectos, uno de los cuales no pierde el valor. - yonahw

Por lo general, veo este comportamiento cuando me olvido de verificar IsPostback en algún lugar. La página cargará todos los datos originales antes de ir al controlador de eventos SelectedIndexChanged.

Respondido 07 Oct 08, 14:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.