Cancellazione del ViewState

mercoledì 07 luglio 2004 - 12.28

mtnet Profilo | Newbie

Buongiorno

Questo è il mio primo Thread in questo forum, dopo qualche mese passato ad apprendere la nuova sintassi di c# Vi chiedo un piccolo aiuto.

Come posso fare per cancellare completamente il contenuto del ViewState?
Ho delle void che controllano il postback della pagina ma in alcune situazione vorrei che la pagina risultasse "vergine" e che quindi il !IsPostBack diventasse true anche se non l'ho è.

Credo che cancellando il viewstate il problema si risolva.
Credo

Avete qualche suggerimento?

Grazie & buon lavoro

Marco

mtnet Profilo | Newbie

Grazie x l'attenzione.

Un piccolo esempio:

Ho una Drop Contenete 3 items Pippo,Pluto e Paperino (che fantasia) & una Check.
Sia la drop che la Check vengono creati con una placeholder in modo dinamico.
Scrivo su db un attributo dei miei items visibile con una check.
La mia pagina, in base alla selezione della drop stabilisce se la check è da ceccare o no.

protected System.Web.UI.WebControls.PlaceHolder contenuto;
public void Page_Load(object sender, System.EventArgs e)
{
LoadConfig();
}
private void LoadConfig()
{
DropDownList DrpDwnLst;
DrpDwnLst=new DropDownList();
DrpDwnLst.SelectedIndexChanged+=evDrpDwnLst; //Ricarico la pagina leggendo l'items selezionato
DrpDwnLst.AutoPostBack=true;
DrpDwnLst.ID="MyDrp";

DrpDwnLst.Items.Add("Pippo");
// ecc..
contenuto.Controls.Add(DrpDwnLst);

CheckBox ChkBx;

ChkBx=new CheckBox();
ChkBx.ID="MyId";
ChkBx.Text="Bla bla";
ChkBx.CssClass ...;
ChkBx.CheckedChanged+=MyEv;
// Ora controllo se lo stato della mia check è da ceccare o no
if (Convert.ToInt16(IlMioControlloDataSetFileOAltroCheSia==1)
{
ChkBx.Checked=true;
}
else
{
ChkBx.Checked=false;
}
contenuto.Controls.Add(ChkBx);
//Il problema è questo!
// Il viewstate non viene aggiornato.
La condizione checked non viene rispettata per motivi a me "misteriosi".

Per risolvere il problema pensavo di rimuovere il viewstate.
Voi cosa ne pensate?

Grazie
Marco
}






mtnet Profilo | Newbie

Il viewstate non funziona correttamente quando creo dinamicamente i controlli (Drop, Check ecc..).
Io non setto il viewstate.
Il default è true.

Marco

Brainkiller Profilo | Guru

Ciao mtnet,
prima vorrei capire che cosa vuoi fare, se sconvolgere l'architettura di ASP.NET o cos'altro. Perchè vuoi togliere il ViewState?
Per disabilitarlo dalla pagina è sufficiente che usi un bel:

Page.EnableViewState=false

o inserire una direttiva in testa alla pagina con EnableViewState="false", così dovrebbe sparire.
Forse hai risolto qualcosa ?

facci sapere.
ciao
david

mtnet Profilo | Newbie

Il codice mi sembra abbastanza chiaro.
Quando si generano controlli in modo dinamico il viewstate ha dei comportamenti "strani".

Da quello che ho potuto leggere & studiare il viewstate viene generato dopo il primo post della pagina.

Se al primo caricamento della pagina la mia check è impostata a checked=false, non riesco + a visualizzarla come checked=true.
if (IlMioControlloDataSetFileOAltroCheSia==1)
{
ChkBx.Checked=true;
// Controllando il codice in debug questa condizione viene eseguita, ma in visualizzazione la check non è cekkata.
}
else
{
ChkBx.Checked=false;
}

La colpa è del viewstate, credo, oppure sto sbagliando qualcosa, il tipo di lavoro sicuramente :-).

La soluzione + rapida mi sembra quella di riscrivere la pagina con controlli "statici". Fan..lo il placeholder.

>prima vorrei capire che cosa vuoi fare, se sconvolgere l'architettura di ASP.NET o cos'altro.

Tendo sempre a non dimentare che l'autore dell'architettura .net è Mister Service Pack Bill.

Saluti
Marco

Brainkiller Profilo | Guru

> Tendo sempre a non dimentare che l'autore dell'architettura .net è Mister Service Pack Bill.

:) infatti quanti Service Pack sono usciti da applicare all'architettura .NET ? Praticamente zero :) solo una piccola collection di fix.

ciao
david

mtnet Profilo | Newbie

2 Versioni nel giro di 2 anni.

Visual Studio 2002 .NET 2002 & Visual Studio .NET 2003. (fix)

Nel 2002 ho acquistato la prima versione (non ricordo il prezzo), ma ricordo i 570 euro spesi per la versione 2003 acquistata pochi mesi fà, quando mi sono accorto dell'incompatibilità tra le 2 versioni.

Dettagli.

Il mio intento non è quello di polemizzare con il forum e mi scuso se ho involontariamente offeso qualcuno (Mamma Microsoft a parte).

Vi ringrazio nuovamente per i suggerimenti ricevuti

Ciao
Marco

Brainkiller Profilo | Guru

> Visual Studio 2002 .NET 2002 & Visual Studio .NET 2003. (fix)

Attenzione, Visual Studio 2003 non è una Fix del 2002 ma c'è un cambio di Framework dall'1.0 all'1.1.
Tutti i pacchetti che avevano distribuito come aggiutna all'1.0 ODBC, Oracle, ecc. sono stati integrati.

>Nel 2002 ho acquistato la prima versione (non ricordo il prezzo), ma ricordo i 570 euro spesi per la versione 2003 acquistata >pochi mesi fà, quando mi sono accorto dell'incompatibilità tra le 2 versioni.

Per chi aveva acquistato la 2002 se non ricordo male c'era l'upgrade alla 2003 per 29 euro proprio perchè la 2003 non era stata proprio una grande rivoluzione, ma questo può capitare quando una tecnologia è nuova.


>Il mio intento non è quello di polemizzare con il forum e mi scuso se ho involontariamente offeso qualcuno

No ma nessun problema. E' bello poter discutere con chi la pensa diversamente non credi ?

ciao
david

Cimperiali Profilo | Newbie

dot net 2003 ita:

Page.EnableViewState=false
o
la direttiva in testa alla pagina con EnableViewState="false"
o
EnableViewState=false per singoli controlli

non paiono fare quel che sostiene la documentazione:
in una semplice webform con due caselle di testo e un pulsante,
impostando un valore in una delle due caselle e
premendo il pulsante il dato viene mantenuto....
O mi sono perso qualcosa?

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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5