2010-06-09 9 views
16

OK - entonces estoy trabajando en un sistema que usa un control personalizado de fecha y hora (sé que hay otros por ahí ... pero por coherencia me gustaría entender por qué mi problema actual está sucediendo y arreglarlo).RegisterStartupScript no parece estar funcionando en la devolución de página dentro del panel de actualización

Así que es un control de usuario personalizada 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 comentada cosas - que me estaba tratando algo diferente - no ayuda.

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

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

¿Alguna sugerencia por favor?

Gracias!

Respuesta

29

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

se ve así:

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

Gracias tanto :) pensé que había llegado a través de este tema antes, pero no podía recordar la alternativa !! – Jen

+1

Gracias, me ha ahorrado mucho tiempo. –

+1

Después de un montón de rasguños en la cabeza, esto funcionó para mí. ¡¡¡Gracias!!! – Yass

Cuestiones relacionadas