2010-06-09 9 views
16

OK - così sto lavorando su un sistema che usa un controllo personalizzato di datepicker (so che ce ne sono altri là fuori ... ma per coerenza vorrebbe capire perché il mio problema attuale sta accadendo e risolvilo).Sembra che RegisterStartupScript non funzioni sul postback della pagina all'interno del pannello di aggiornamento

Quindi è un controllo utente personalizzato con una casella di testo e Page_PreRender fa questo:

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); 
     //} 
    } 

Ignora commentato fuori roba - che mi stavo cercando qualcosa di diverso - non ha aiutato.

Il mio problema è che tutto funziona correttamente quando carico la pagina. Ma se seleziono qualcosa da un elenco a discesa che causa un postback della pagina, quando faccio clic sui miei campi data smettono di funzionare. Come in I dovrei essere in grado di fare clic nella casella di testo e appare un bel controllo del calendario. Ma dopo il postback non c'è un bel controllo del calendario!

Attualmente è tutto incluso (nella pagina di hosting) all'interno di un pannello di aggiornamento. Quindi commento il materiale del pannello di aggiornamento e le date funzionano dopo il postback della pagina. Quindi sembra essere qualcosa collegato a quel pannello di aggiornamento.

Qualche suggerimento, per favore?

Grazie !!

risposta

29

Hai provato ScriptManager invece di Page.ClientScript? Ho guardato il codice che avevo scritto prima con UpdatePanels e jQuery e avevo usato ScriptManager. Penso che lo script non sia disponibile durante un postback parziale se non è registrato con ScriptManager.

appare come questa

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

Grazie mille :) ho pensato incontrato questo problema prima, ma non riuscivo a ricordare l'alternativa !! – Jen

+1

Grazie, mi ha risparmiato un sacco di tempo. –

+1

Dopo un sacco di grattacapi, questo ha funzionato per me. Grazie!!! – Yass

Problemi correlati