non è la prima volta, che casco nel "trappolone" della TexBox e di come viene utilizzato il ViewState.
la proprietà Text è si memorizzata nel ViewState, ma in questo caso, il metodo LoadViewState (ereditato dalla classe WebControl) non è il solo responsabile, nel ripristinare il testo della TextBox, dopo il PostBack.
la classe TextBox, implementa l'interfaccia IPostBackDataHandler; linterfaccia definisce due metodi, LoadPostData e RaisePostDataChangedEvent.
LoadPostData è responsabile del caricamento, dei dati di PostBack ed è implementato così:
bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection) { string text1 = this.Text; //questo valore è recuperato dal ViewState string text2 = postCollection[postDataKey];//questo dai dati provenienti dal post if (!text1.Equals(text2)) { this.Text = text2; return true; } return false; }
asp.net tiene traccia di tutti i controlli che restituiscano true dalla chiamata di questo metodo, quindi viene richiamato RaisePostDataChangedEvent , responsabile di scatenare l'evento TextChanged.
è possibile evitare il caricamento dei dati di PostBack, creando una nuova classe, che erediti da TexBox e reimplementi l'interfaccia IPostBackDataHandler, così da nascondere l'implementazione che ne da TextBox:
bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection) { string text1 = this.Text; string text2 = postCollection[postDataKey]; if(this.EnableViewState == true) { if (!text1.Equals(text2)) { this.Text = text2; return true; } } return false; }
in questo caso ho usato la propietà EnableViewState, per stabile o no se caricare i dati, ma nessuno vietava di creare una proprietà ad hoc, o magari fornire un implementazione nulla del metodo definito dall'interfaccia.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Modificare il controllo TreeView, il 2 dicembre 2008 alle 19:27
- Perfezioniamo il ProfileDataSorce, il 13 ottobre 2008 alle 11:14
- Un DataSource per il Profile, il 10 ottobre 2008 alle 15:06
- TrueSpace 7 gratuito, il 24 luglio 2008 alle 10:59
- adesso dico la mia sull'Iphone, il 22 luglio 2008 alle 10:33
- Come tutto ebbe inizio, il 21 luglio 2008 alle 09:22