c# updatepanel registerstartupscript

c# - RegisterStartupScript no parece estar funcionando en la devolución de página dentro del panel de actualización



updatepanel (1)

Bien, estoy trabajando en un sistema que usa un control de selector de fecha personalizado (sé que hay otros por ahí ... pero por coherencia me gustaría entender por qué está ocurriendo mi problema actual y solucionarlo).

Así que es un control de usuario personalizado con un cuadro de texto y en Page_PreRender hace esto:

protected void Page_PreRender(object sender, EventArgs e) { string clientScript = @" $(function(){ $(''#" + this.Date1.ClientID + @"'').datepicker({dateFormat: ''dd/mm/yy'', constrainInput: true}); });"; Page.ClientScript.RegisterStartupScript(this.GetType(), this.ClientID, clientScript, true); //Type t = this.GetType(); //if (!Page.ClientScript.IsStartupScriptRegistered(t, this.ClientID)) //{ // Page.ClientScript.RegisterStartupScript(t, this.ClientID, clientScript, true); //} }

Ignorar las cosas comentadas, ese era yo intentando algo diferente, no ayudó.

Mi problema es que todo esto funciona bien cuando carga la página. Pero si selecciono algo de una lista desplegable que provoca una devolución de página, cuando hago clic en los campos de fecha, dejan de funcionar. Al igual que en, debería poder hacer clic en el cuadro de texto y aparece un buen control de calendario. ¡Pero después de la devolución de datos no aparece un buen control de calendario!

Actualmente está todo envuelto (en la página de alojamiento) dentro de un panel de actualización. Así que comento las cosas del panel de actualización y las fechas funcionan después de la devolución de página. Así que parece ser algo relacionado con ese panel de actualización.

¿Alguna sugerencia por favor?

¡¡Gracias!!


¿Has probado ScriptManager en lugar de Page.ClientScript? Miré un código que había escrito antes con UpdatePanels y jQuery y usé ScriptManager. Creo que la secuencia de comandos no está disponible durante una devolución parcial de datos si no está registrada con ScriptManager.

Se ve como esto:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "DatePickerScript", clientScript, true);