AJAX insieme a normali PANEL

venerdì 23 gennaio 2009 - 17.34

ravalon Profilo | Expert

Salve, ho una pagina dove mostro un carrello...

Il pezzo per l'utente del carrello è racchiuso dentro un ASP:PANEL

Vorrei usare AJAX su questa pagina per far aggiornare il carrello velocemente quando l'utente elimina un prodotto o modifica i quantitativi...

Ho aggiunto il codice ma stranamente la pagina si ricarica del tutto....

Vi posto un pezzo....

<ajax:ScriptManager ID="ScriptManagerCarrello" runat="server"> </ajax:ScriptManager> <ajax:UpdatePanel ID="UpdatePanelCarrello" runat="server"> <ContentTemplate> <asp:Panel runat ="server" ID="PanelCarrello" Visible= "true"> ..... codice carrello... </asp:Panel> </ContentTemplate> </ajax:UpdatePanel>

cosa sbaglio ?

balfaz Profilo | Expert

facci vedere un po di codice behind, okkio con i postback degli altri controlli se loro non puntano verso il postback asincrono non stai facendo niente, cerca di aggiornare l'updatepanel dopo aver finito di caricare un prodotto, aggiunge all'updatepanel la proprieta mode="conditional", in questa maniera potrai aggiornare direttamente da codice il tuo updatepanel.
tuoupdatepanel.update()

Spero questo ti possa aiutare

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ravalon Profilo | Expert

Grazie della risposta in effetti non avevo fatto il controllo sul postback....

Adesso mettendo un attesa all'esecuzione della pagina ho potuto vedere che l'update progress si visualizza e che quindi ajax funziona....

Il problema avviene durante l'eliminazione di un prodotto dall'elenco del carrello...

Ho usato questo codice

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

Praticamente la pagina si aggiorna subito ma non mi ricarica i dati e mi si visualizza vuota...

Forse è il REDIRECT che mi elimina la funzione che ricarica i dati ? Però ho provato ad eliminare il redirect e non cambia niente...

Aggiungo anche i dati del Page_Load

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

ravalon Profilo | Expert

Nessuno mi sa dare un suggerimento in più ?

balfaz Profilo | Expert

scusa una risposta cosi tarde, ma si ho visto che fai un redirect (che ricarica la pagina comunque).

come markup ci puoi far vedere qualcosa di codice??
Ti spiego devi cercare la maniera di richiamare l'updatepanel oppure richiamare la funzione che ti ricarica il carrello e ti aggiorna il testo

Per adesso al volo la soluzione possibile che ti offro e questa:
Dim IdCart As Label = CType(e.Item.FindControl("IdCart"), Label) Select Case e.CommandName.ToString Case Is = "DeleteFromCart" Dim clsOpDb As New ClassOperazioniDB Call clsOpDb.EliminaProdottoDaCarrello(CInt(IdCart.Text)) call TUA_PROCEDURA_PER_AGGIORNARE_CARRELLO() TuoUpdatePanel_DATI_CARRELLO.update() End Select

comunque ci verrebbe comodo se ci posti un po di codice markup per capire la struttura del tuo carrello e UpdatePanel

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ravalon Profilo | Expert

Ciao, grazie per la risposta...

avevo già usato un codice di questo tipo per far eseguire il DELETE

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

In pratica usavo il redirect proprio per aggiornare la visualizzazione del carrello dopo che da DB erano stati eliminati dei records tramite la procedura clsOpDb.EliminaProdottoDaCarrello

ti posto anche tutto l'aspx...scusa se è troppo comunque dentro ci trovi 3 panelli....quello che conta è PanelCarrello

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

ravalon Profilo | Expert

ho postato il codice...qualche anima pia che mi dice come mai non mi va l'update con ajax ???

Ho provato anche ad usare l'updateMode=Conditional e richiamare , dopo la routine di eliminazione del prodotto, il metodo update dell'updatePanel ma non fa nulla..non si muove....

balfaz Profilo | Expert

dove hai dichiarato l'uso della libreria ajax della tua pagina ad esempio
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
è solo una curiosità

appena ho 2 min.... un po più di 2 min. ci guardo bene questo codice......Non disperarti


"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ravalon Profilo | Expert

Ho configurato il web.config e poi aggiungo lo ScriptManager e l'UpdatePanel dall'IDE di VWD

Nello stesso modo in cui l'ho usato per tutte le altre pagine e funziona ovunque...

Qui il problema è in qualche cosa di concetto che sbaglio proprio o, come da oggetto, nel fatto che il tutto contiene anche dei normali PANEL control

Ho provato anche ad usare l'updateMode=Conditional e richiamare , dopo la routine di eliminazione del prodotto, il metodo update dell'updatePanel ma non fa nulla..non si muove....

###########AGGIORNAMENTO###########

Nella stessa pagina ho una procedura che aggiorna il prezzo totale in base all'impostazione di un codice sconto....non fa altro che fare due conti alla pressione di un bottone...
Questi, che è dentro lo stesso UpdatePanel , funziona benissimo e aggiorna il campo senza ricaricare la pagina....quindi come mai il resto no ? c'è qualcosa che sbaglio è evidente !

a questo punto posto anche il page_load, forse l'errore sta li

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

ravalon Profilo | Expert

########ULTERIORE AGGIORNAMENTO #############à

Richiamando, dopo l'eliminazione del record dal carrello, la procedura che carica il Repeater (la stessa che sta nella Page_Load), il tutto funziona alla perfezione....

Però mi sembra un uso improprio dover richiamare ancora la procedura che popola il Repeater...o mi sbaglio ???? o è forse corretto dato che ho alterato i record presenti sul DB?

Comunque ora lavora ottimamente.... in effetti credo di avere fatto una domanda un po' stupida...se i record sono cambiati è normale che debba rifare un DataBind ..... è cosi ?
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5