Pregunta

Problema: : Contenido con el control UpdatePanel y Asistente con marcador de posición. Por encima de la UpdatePanel es un DropDownList. Necesito mostrar diferentes controles de entrada por debajo de la lista desplegable cuando el usuario cambia la selección en la lista desplegable. Cuando el usuario hace clic en 'Siguiente' en el control asistente, tengo que ser capaz de obtener los datos de los controles dinámicos también.

Sé que todos los controles dinámicos tienen que ser creados en el método OnInit con el fin de conseguir la parte posterior de los datos de los controles durante la devolución de datos. Sin embargo, cuando se dispara el desplegable evento SelectedIndexChanged de lista, el método OnInit se llama ... entonces el pageLoad ... y finalmente el controlador para el evento SelectedIndexChanged se llama. ViewState no ha sido restaurada hasta mucho después de los métodos OnInit y Pageload han sido llamados, así que no hay manera de saber lo que el usuario escogió en el cuadro de lista en el OnInit tiempo se llama ... lo que exactamente cuando estoy obligado a crear los controles dinámicos.

Así que ... ¿cómo resolver este problema? ¿Sólo tiene que escribir toda la página, o la mayor parte de ella, usando JavaScript?

Gracias de antemano.

¿Fue útil?

Solución

Me tienden a utilizar un método de la vieja escuela para este tipo de requisito. Me gustaría escribir todos los controles que son necesarios en el panel de actualización, con su conjunto de propiedades visible en false. A continuación, en la espalda después de leer el estado de la caída hacia abajo y coloque los controles approperate propiedad Visible en true. De esta manera no hay controles "dinámicas", y debido al hecho de que los controles cuya propiedad Visible es falso no resultarán, que no se descargan hasta que el usuario debe verlos.

Otros consejos

También puede utilizar un asp: HiddenField y establezca el valor en un caso var crear mentalmente. a continuación, ejecutar un pequeño script jQuery en la parte superior para mirar

$(document).on("change", "#ddlSelector", setControls);

a continuación, sólo hacer una función, por ejemplo:

function setControls(event) { 
    event.preventDefault();
    var selector = hiddenfield.val();
}

A continuación, cualquier elemento para mostrar / ocultar se puede hacer con la obtención de la etiqueta:

$("#elementName").css("display", "inline"); 

o la pantalla, ninguno de ocultar. He utilizado este en el trabajo porque a veces necesita cambiar sin disparar la devolución de datos, pero todavía recopilar datos cuando se involucran el formulario.

Me suelen evitar jQuery para muchos eventos de fuerza de código y la seguridad, pero la manipulación elemento DOM puede ser mucho más fácil, a veces con jQuery.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top