29 messaggi dal 25 gennaio 2002
Sembrava facile.....
in effetti aggiungende la variabile temporale e la connessione al db tutto sembra funzionare regolarmente finchè con un dropdownlist non permetto all'utente di scegliere l'evento a cui fare riferimento,sul secondo postback (il primo viene eseguito regolarmente in quanto parte da un panel vuoto) il viewstate fa le bizze in quanto ,mi scatena il temutissimo : Impossibile caricare viewstate. La struttura di controlli nella quale viene caricato viewstate etc etc. .la cosa credo sia dovuta al fatto che poltrone nello stesso numero stessa fila(quindi la stessa poltrona ) hanno diversi status a seconda dell'evento e quindi la propietà enabled del chckbox cambia da una volta all'altra .Memore del tuo primo post e seguendo l'articolo di 4guysfromrolla ho provato ad aggiungere prima il checkbox generico al panel e poi settarne le propietà ma mi da lo stesso risultato.c'è modo di azzerare i precedenti controlli nel panel ,fare la mia query e buttar dentro i miei checkbox nuovi nuovi....
grazie
Arnaldo Morena
29 messaggi dal 25 gennaio 2002
ehm....
per farla zozza ho disabilitato il viewstate e adesso va ,secondo te che controindicazioni ci possono essere?
grazie?
426 messaggi dal 17 aprile 2006
domani provo a ricreare la tua situazione senza disabilitare il viewstate e ti dico se riesco a trovare un workaround.

ad ogni modo se la pagina si comporta come deve senza il viewstate hai solamente ridotto le dimensioni della pagina che arriva al client e dunque prevedo solo un server meno ingolfato :)

Ciao Alessandro
in generale per i controlli creati runtime perche il ViewState sia caricato correttamente è necessatio che i controlli siano inseriti nel contenitore nel solito ordine.

quindi l'errore è sicuramente dovuto come avrai letto su 4guysfromrolla al fatto asp.net non è in grado di riassegnarlo correttamente.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
426 messaggi dal 17 aprile 2006
sinceramente non ho letto articoli sull'argomento su 4guysfromrolla (ma colmerò in fretta la lacuna :) ) ad ogni modo ho fatto diverse applicazioni su questionari dinamici che usano tecniche simili e creano controlli runtime, ed il temutissimo (come lo definisci tu) "Impossibile caricare viewstate" non l'ho mai riscontrato in tali applicazioni .

ripeto, l'esempio che ti ho fatto l'ho buttato giù al volo e dunque dovrà essere ottimizzato (e corretto suppongo), e proprio in merito alla situazione che devi gestire la cosa migliore credo sia riprodurre il tuo scenario... ergo provo e ti dico.

ps se devi cancellare i controlli Panel1.Controls.Clear() o simili nel page init dovrebbero funzionare... :)

Ciao Alessandro
426 messaggi dal 17 aprile 2006
arnymore ha scritto:
Sembrava facile.....
la cosa credo sia dovuta al fatto che poltrone nello stesso numero stessa fila(quindi la stessa poltrona ) hanno diversi status a seconda dell'evento e quindi la propietà enabled del chckbox cambia da una volta all'altra

No il problema non è per gli stati del checkbox ma per il fatto che il pannello in cui sono stati inseriti presenta immagini e controlli differenti a seconda del fatto che i checkbox enabled.
se hai ripreso pedissequamente quello che ti ho postato allora noterai che in caso di posto indisponibile carico un'immagine di poltrona disabilitata, ma nel caso sia enabled carico due immagini.
l'ordine dei controlli all'interno del asp:panel cambia dunque se lo stato delle poltrone cambia.
ergo hai due possibilità
1) al cambiare del dropdownlist ricarichi la pagina con un redirect e metti un
?idevento= valore del dropdownlist
oppure
2)modifichi il codice per inserire comunque sempre tre immagini
disabilitato selezionato e libero. poi se il checkbox è disabled metti display none sulle altre immagini mentre se è enabled metti il display none sulle immagini disabilitato e selezionato.

                    CheckBox cb = fnCreaPoltrona(sp);
                    PanelPlatea.Controls.Add(cb);
                    LiteralControl ltl = new LiteralControl("<div style=\"float:left;\">");
                    PanelPlatea.Controls.Add(ltl);
                    Image imgDisabilitato = new Image();
                    PanelPlatea.Controls.Add(imgDisabilitato);
                    imgDisabilitato.ImageUrl = sUrlPostoDisabilitato;
                    imgDisabilitato.ToolTip = "Posto non disponibile";
                    imgDisabilitato.AlternateText = "X";
                    Image imgLibero = new Image();
                    Image imgSelezionato = new Image();
                    PanelPlatea.Controls.Add(imgLibero);
                    PanelPlatea.Controls.Add(imgSelezionato);
                    imgLibero.ImageUrl = sUrlPostoLibero;
                    imgSelezionato.ImageUrl = sUrlPostoSelezionato;
                    imgSelezionato.ID = "is" + cb.ID;
                    imgLibero.ID = "il" + cb.ID;
                    string sTipoPosto = "Fila: " + sp.Split(':')[0] + " Posto: " + sp.Split(':')[1];
                    imgLibero.ToolTip = sTipoPosto;
                    imgLibero.AlternateText = sTipoPosto;
                    imgSelezionato.AlternateText = sTipoPosto;
                    imgSelezionato.ToolTip = sTipoPosto;
                    imgSelezionato.Style.Add("display", "none");
                    imgLibero.Attributes.Add("onclick", "fnSetCheck('" + imgLibero.ClientID.Replace(imgLibero.ID, "") + "','" + cb.ID + "','true')");
                    imgSelezionato.Attributes.Add("onclick", "fnSetCheck('" + imgSelezionato.ClientID.Replace(imgSelezionato.ID, "") + "','" + cb.ID + "','false')");
                    if (!cb.Enabled)
                    {
                        imgLibero.Style.Add("display", "none");
                        imgSelezionato.Style.Add("display", "none");
                    }
                    else
                    {
                        imgDisabilitato.Style.Add("display", "none");
                    }
                    LiteralControl ltl2 = new LiteralControl("</div>");
                    PanelPlatea.Controls.Add(ltl2);

Ciao Alessandro
29 messaggi dal 25 gennaio 2002
ciao a tutti sono riemerso solo oggi
grazie innanzitutto per le risposte
in effetti il codice che mi hai inviato è stato massicciamente modificato,considerando che le immagini non vengono + caricate ma disegnate on the fly (avevo l'esigenza di numerarle ) con il classico metodo del riferimento ad una pagina aspx che sfrutta la classe graphics.credo che il problema sia dovuto comunque alle immagini come mi ha segnalato taccio e lavorerò in quel senso anche perchè sostanzialmente le opzioni e la loro analisi non sono cambiate di molto ,appena recupero il bandolo posto.
ciao

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.