Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Persistere lo stato della proprietà widht del controllo panel
sabato 21 novembre 2009 - 09.45
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
sab 21 nov 2009 - 09:45
vorrei persistere o nel viewstate o nel controlstate lo stato della porprietà width di un controllo panel in modo che mantenga memorizzato il cambiamento di valore durante l'esecuzione della pagina web dopo ogni postback.
L'idea era quella di crearmi un coustom control derivato da panel e fare l'override della proprietà width e specificare che mantenga il suo stato nel viewstate solo che evidentemente l'override di una proprietà non si può fare (se non sbaglio).
Quindi l'altra soluzione sarebbe crearmi da zero il controllo derivando da webcontrol e crearlo uguale ad un panel (esclusa la proprietà width di cui la personalizzerei), a sto punto la domanda è: come faccio ad implementare nel nuovo controllo tutti i metodi e proprietà esattamente come quelle del controllo panel (a parte le mie personalizzazioni che poi inserisco)?
da visualizzazione oggetti se vado sul tipo panel vedo la sua implementazione ma non nel dettaglio, cè il modo per vederla nel dettaglio in modo da riprodurla?
avete qualche altro suggerimento x mantenere lo stato della proprietà width?
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
lun 23 nov 2009 - 09:10
Scusa, che tipo di panel stai implementando? Il Panel di ASP.NET?
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
lun 23 nov 2009 - 11:46
si certo, ma comunque la mia domanda è rivolta anche in senso generico.
e cioè come faccio con qualsiasi controllo sia webcontrol che htmlcontrol (textbox, label etc.) a persistere lo stato di alcune prorietà che non lo persistono x definizione.
Diciamo che non ho capito bene una cosa:
una texbox persiste il contenuto di testo che viene immesso da browser dentro la casella anche dopo il postback, ma non capisco come avviene il meccanismo.
Immagino che nel caso di una textbox il contenuto venga inviato in automatico da un submit da browser dopodichè la parte lato server implementa un meccanismo x reinserire i dati postati all'interno della textbox prima del reinvio al browser. Se così avviene penso che non potrò mai persistere una proprietà tipo width ammenochè io non creo un javascript che in automatico mi copi il valore della proprietà width in un controllo di tipo textbox in modo che poi venga inviato tramite il submit, oppure sbaglio?
Ho pensato anche a creare un custom control è nella proprietà width specificare che venga salvato il valore nel viewstate, solo che non credo che aspnet riesca a mantenermela se non implemetno io appunto un meccanismo, giusto?
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
lun 23 nov 2009 - 16:59
Il discorso è un pò complesso... Per comprenderlo a fondo devi tanto per cominciare guardarti il concetto di ViewState nonchè il ciclo di vita di una pagina aspx, ad esempio nel link qui sotto.
http://msdn.microsoft.com/en-us/library/ms178472.aspx
Dopodichè, capita la differenza tra ControlState e ViewState, probabilmente a te serve implementare una ControlState. Questo link potrebbe aiutarti.
http://www.asp.net/Learn/videos/video-241.aspx
Ti ho chiesto inoltre che tipo di Panel utilizzi perchè in realtà il panel di ASP memorizza in viewstate anche la width, quindi il problema diciamo che non si pone (o almeno non per il caso specifico).
In tutti gli altri casi devi gestire tu la ViewState.
Pe quel che riguarda accedere al codice sorgente di un controllo, qualcosa puoi farla con Reflector ma se il tuo obiettivo è partire da un controllo e estenderne le funzionalità, allora puoi far si che il tuo controllo derivi dalla classe del controllo che vuoi estendere.
fguida
Profilo
| Expert
524
messaggi | Data Invio:
lun 23 nov 2009 - 17:13
Alcuni controlli hanno il Viewstate attivo ed è per questo che "memorizzano" alcune proprietà in modo che anche dopo il Load della pagina sia mantenuto. Non è complesso impostare proprietà con viewstate, però non ho ben capito cosa ti occorre.
Francesco
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
lun 23 nov 2009 - 18:31
si il fatto è che comunque anche se imposti una nuova proprietà (come nel video del control state), poi questa proprietà non ce lhai renderizzata in automatico nel browser o comunque non la puoi manipolare da browser. cioè io vorrei poterla in qualche modo modificarla da browser e poi reinviarla al server con il postback.
cioè riassumendo:
- mi creo un user control o un custom control derivato da un controllo già esistente
- imposto una nuova proprietà e la imposto in modo che salvi o nel view state o nel control state (come da video)
a questo punto io vorrei inserire un volore da browser nella nuova proprietà, in modo che al ritorno del postback mi ritrovo i valori che ho immesso precedentemente. come faccio?
immagino che devo affiancare al mio controllo tipo una textbox o un qualcosa del genere che mi dia la possibilità di inserire un valore da browser e una volta inviata sul server mi copi il valore nella proprietà.
sankyu
Profilo
| Senior Member
266
messaggi | Data Invio:
mer 25 nov 2009 - 23:48
usa una classe css che imposti on page pre render e buona notte! gli stili li puoi modificare come vuoi via codice ed è pure meglio tenere separate le propieta di visualizzazione dal contenuto
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
gio 26 nov 2009 - 11:03
si ma una volta renderizzata uno stile x un controllo poi comunque su browser il problema è sempre lo stesso, rimandare le modifiche dello stile al server tramite postback.
anche in questo caso avrei bisogno di un javascript che mi modifichi lo stile, mi copi i valori tipo in un hiddenfield e mi invii il tutto al server, o ci sono altre possibilità?
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !