Aggiornamento label non riuscito

venerdì 07 agosto 2009 - 15.23

ravalon Profilo | Expert

Salve, ho un repeater che mi calcola un prezzo aggiuntivo da sommare ad un carrello della spesa in base a quale item è stato cliccato

se l'item ha un campo valorizzato per un prezzo aggiuntivo, devo ricalcolare il totale del carrello...

ecco il codice

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Purtroppo però il prezzo del totale non cambia, la label del totale non si aggiorna...

Premetto che la pagina usa AJAX....

Sapete gentilmente darmi una dritta ?

balfaz Profilo | Expert

facci vedere un po di codice markup della pagina, proprio per farci una idea della struttura e dei controlli, vediamo un po
Dove troverai sempre una mano disposta ad aiutarti è nell'estremo del tuo proprio braccio

ravalon Profilo | Expert

Ok posto tutta la pagina del carrello....

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ravalon Profilo | Expert

Qualcuno sa darmi un aiuto su questo problema ? non riesco a trovare il bandolo della matassa. Grazie

Gluck74 Profilo | Guru

hai postato un po trobba roba.... ora mica ci mettiamo a spulciare tutto il codice......

per favore, circoscrivi il problema (e il codice) per metterci in grado di aiutarti.
Inoltre tu hai parlato di ajax, ma io non ho visto nulla che mi riconduca ad ajax.

C'è un update panel da qualche parte? c'è una chiamata ad un webService?

ravalon Profilo | Expert

avevo inizialmente circoscritto il codice, poi mi è stato chiesto qualcosa in più e l'ho fatto....

Si ci sono updatepanel.....ti riscrivo meglio appena riesco a far rifunzionare VWD che non vuole più saperne di fare il debug...

ravalon Profilo | Expert

Ok, ora mi rifunziona tutto...

come ho detto ho postato tutto il markup perchè balfaz me lo aveva chiesto, diversamente non avrei inviato tanto codice da visionare e infatti ne avevo postato una piccola parte, quella che ritenevo utile alla comprensione del problema e che portava al suo interno la parte coinvolta nell'aggiornamento della label in oggeto....

Se mi dici cosa ti serve per capire bene te lo posto volentieri (ci mancherebbe dato che mi aiutate), però se vuoi aiutarmi dai un occhio al pezzo di codice inizialmente postato....

...grazie sin d'ora

Gluck74 Profilo | Guru

la funzione che ricalcola è abbastanza chiara, quello che ci manca è vedere la pagina aspx che disegna i componenti e lancia questa funzione...
ma non tutta la pagina, solo la parte interessate.

ciao

ravalon Profilo | Expert

Ok allora questa è la parte di codice aspx che genera la scelta degli item...

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

al posto dei puntini c'è tutto il codice che ho ritenuto superfluo...

Gluck74 Profilo | Guru

non riesco a vedere l'errore.

vediamo intanto se ho capito:

tu hai il repeater che scrive alcuni dati in base alla spedizione. cliccando vai ad aggiungere spese aggiuntive e quindi aggiorni il costo totale.

lblCartTotale è la label con il costo? sta all'interno dello stesso pannello dove c'è il repeater?
l'unico dato che si aggiorna nella pagina è il costo totale? allora metti l'updatePanel che contenga SOLO la label del totale, ed aggiungi al pannello il repeater come trigger.

vedrai che la pagina si alleggerirà parecchio e sarà anche più facile gestirla.


altra domanda: il controllo "ucSplitTableBarra:SplitTableBarra" mi sembra di averlo già visto da qualche parte. per caso usi un CMS open scaricato? Quale che forse l'ho scaricato anche io. così posso controllare meglio il codice

ravalon Profilo | Expert

Ciao,
vediamo se mi spiego...

ho un repeater che elenca i vari tipi di spedizione disponibili....

Per alcuni è necessario aggiungere un costo come supplemento, per cui controllo alla pressione di un ImageButtone in tal caso sommo al prezzo totale (mantenuto da lblCartTotale) il supplemento (per il corriere che consegna in contrassegno ad esempio)

Seguendo il debug il calcolo viene fatto bene ma non si aggiorna la label lblCartTotale

L'update panel è per quasi tutta la pagina dato che dentro ho diversi repeater e diverse cose che si devono aggiornare....

Per il controllo di cui mi chiedi no, l'ho fatto io e serve solo come spaziatore / impaginatore di frammenti di html

Gluck74 Profilo | Guru

ecco, ho visto il problema......
così a primo impatto non avevo visto, ma guardando attentemente il codice ho notato che l'update panel ha questa proprietà:
UpdateMode ="Conditional"
allo stesso tempo la funzione "RepeaterPagamentiAccettati_ItemCommand" non ha nessun riferimento al pannello.

è per questo che non si aggiorna; nessuno glielo dice.

Dovresti mettere, alla fine della funzione, dopo che hai aggiornato la label, questa istruzione:
UpdatePanelCarrello.update();

ciao ciao

ravalon Profilo | Expert

Purtroppo non è quello.....quel codice c'era anche se era remmato...infatti avevo già provato...

Però forse mi sono avvicinato all'errore...

ho notato che se premo un bottone che applica uno sconto, e che agisce sulle stesse identiche label, questo funziona e aggiorna il totale...

Dopo che ho usato questo bottone, come per magia funziona anche l'altro codice, cioè quello per cui sto chiedendo assistenza....

Che collegamento c'è ? ho controllato ma non riesco a capire....

posto i due codici separati e per certi tratti molto simili...

CODICE BOTTONE APPLICA SCONTO

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

CODICE SCELTA PAGAMENTO

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

....

Gluck74 Profilo | Guru

se entrambi i bottoni stanno nello stesso UpdatePanel, insieme all'eichetta, allora il problema è da ricercarsi strettamente nel codice della funzione.
Però per me è impossibile fare il debug.

mi spiace

ravalon Profilo | Expert

Ho risolto il problema....

stavo cercando il bug all'interno dei singoli eventi che effettivamente realizzavano l'aggiornamento senza considerare che questi repeater erano dentro un repeater padre, che nel momento dell'evento PreRender, rimodificava tutto dato che è l'ultimo evento a scatenarsi....

ora tutto funziona
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