59 messaggi dal 18 ottobre 2012
Salve,
sto creando il mio primo composite control.
In breve si tratta di un calendario realizzato con una tabella, due textbox per anno e mese con due pulsanti ciascuno per avanzare e decrementare rispettivamente l'anno e il mese.

Nell'override del metodo CreateChildControls ho inserito tutta la logica di creazione.

Il tutto funziona e viene renderizzato.
Il problema è che mentre le textbox si decrementano e incrementano alla pressione dei rispettivi pulsanti la tabella non si aggiorna.

Il motivo è che quando recupero il valore delle textbox questo è sempre quello di default mentre a video il risultato cambia.

Come posso risolere?

Grazie mille.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

Ginus82 ha scritto:

Il motivo è che quando recupero il valore delle textbox questo è sempre quello di default

probabilmente significa che stai aggiornando la tabella troppo presto nel ciclo di vita del controllo.

Se lo fai nell'Init, ad esempio, le textbox non avranno ancora avuto modo di recuperare i loro valori aggiornati dal form (la fase "Posted data processing" non si è ancora verificata). Come risultato, avrai appunto che le textbox restituiscono il loro valore di default.

Se lo fai nel Load, non va comunque bene perché non si è ancora verificato l'evento Click del bottone che modificherebbe il contenuto della textbox.

Dovresti spostare la logica di aggiornamento della tabella in una fase più avanzata. Scegli l'evento PreRender, che è l'ultima opportunità che hai per interagire con i controlli prima che producano il loro output HTML.
//nel costruttore sottoscrivo l'evento PreRender
public MioControlloComposito() {
   this.PreRender += AggiornaTabella;
}
//ecco la funzione che aggiorna la tabella
protected void AggiornaTabella(object sender, EventArgs e){
  //qui recuperi i valori dalle textbox...
  //...e li usi per aggiornare la tabella
}



ciao
Modificato da BrightSoul il 08 giugno 2013 18.23 -

Enjoy learning and just keep making
59 messaggi dal 18 ottobre 2012
Grazie molle, funziona 😃

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.