Chiedere conferma di una operazione all'utente su ASP.NET

mercoledì 07 gennaio 2009 - 18.12

ravalon Profilo | Expert

Salve,

ho una funzione di cancellazione del carrello della spesa nel sito che sto sviluppando...

Prima di lanciare il comando SQL vorrei però chiedere conferma all'utente della scelta fatta di eliminare tutto...

Come posso farla in ASP.NET in un modo semplice ?

rossimarko Profilo | Guru

Ciao,

puoi sfruttare javascript e inserire nel tuo button la richiesta di conferma

<asp:Button id="btnCancella" runat="server" OnClientClick="return window.confirm('Continuare?')" />

Poi puoi gestire normalmente l'evento click del bottone su server , perchè verrà scatenato solo quando utente preme ok.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

ravalon Profilo | Expert

Ok mi sembra una buona soluzione....

solo che avendo già scritto il codice che richiama alla routine di cancellazione del carrello, mi ritrovo già l'evento scritto e piu' precisamente cosi

<asp:ImageButton ID="ImgBtnSvuotaCarrello" SkinID="btnSvuotaCarrello" runat="server" CausesValidation ="false" PostBackUrl=<%#Pathlevel & "Catalogo/SvuotaCarrello.aspx"%> ToolTip="<%$Resources:ResourceMaster, txtCostolaSvuotaCarrelloDesc%>" OnClick="ImgBtnSvuotaCarrello_Click" /></asp:Panel>

Come posso modificare l'evento OnClick in modo che dopo la conferma punti comunque all'evento ImgBtnSvuotaCarrello_Click ?

rossimarko Profilo | Guru

Ciao,

puoi usare la proprietà OnClientClick anche sul controllo ImageButton, quindi fai una prova copiando il valore della proprietà per vedere se viene interpretata correttamente
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

ravalon Profilo | Expert

Ok li ho usati entrambi e funzionano correttamente...prima viene interpretato l'evento client per la conferma, poi l'altro lato server....

Grazie mille come sempre, siete grandi !

ravalon Profilo | Expert

Un'ultima cosa....

vorrei che nel messaggio di conferma comparisse qualcosa che ho specificato in un file di risorse...ho usato questo codice

...OnClientClick ="return window.confirm('<%$Resources:ResourceMsg, MsgConfermaSvuotamentoCarrello%>')" />

ma non mi lavora...

ho provato anche con

<%=Resources.ResourceMsg.MsgConfermaSvuotamentoCarrello%>

e

<%#Resources.ResourceMsg.MsgConfermaSvuotamentoCarrello%>

ma non visualizza il testo....come dovrei fare ?

rossimarko Profilo | Guru

Ciao,

prova a impostare il valore della proprietà da codice, puoi sfruttare ad esempio i metodi GetLocalResourceObject http://msdn.microsoft.com/it-it/library/system.web.ui.templatecontrol.getlocalresourceobject.aspx oppure GetGlobalResourceObject http://msdn.microsoft.com/it-it/library/ms153593.aspx
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

ravalon Profilo | Expert

Ho visto il metodo...

potrei usare

Convert.ToString(GetLocalResourceObject("miastringa"))

ma dove lo metto lato codice ? in che modo ? perdona la mia inettidudine

rossimarko Profilo | Guru

Il pulsante è contenuto in un altro controllo oppure è all'interno della pagina?

Se è nella pagina puoi popolarlo nel page_load, altrimenti devi popolarlo in uno degli eventi richiamati durante il databind di un elemento di dettaglio. Ad esempio nel repeater hai un evento ItemDataBound http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx.
Intercettando questo evento puoi accedere ad un item contenuto nel repeater e settarne le proprietà
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

ravalon Profilo | Expert

Ok questo credo di averlo afferrato....quello che non mi torna è che io voglio dare questo testo al Javascript dell'evento OnClientClick....come faccio a popolare quello ?
per il resto sono riuscito a fare tutto.

ravalon Profilo | Expert

Ok ho risolto spostando tutto il codice che avevo messo dapprima nell'ASPX dentro al code behind nell'evento Page_PreRender

cioè cosi

OnClientClick ="return window.confirm('" & Resources.ResourceMsg.MsgConfermaSvuotamentoCarrello & "')"

funziona tranquillamente

rossimarko Profilo | Guru

Ti consiglio di impostare tutta la proprietà da codice, javascript compreso. Quindi diventerebbe

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

Con la sting.format crei la stringa e il valore da passare a {0} lo prendi nelle risorse

Edit: scusa, non avevo visto la risposta
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

ravalon Profilo | Expert

cosi come l'ho lasciato io non va bene ? che problemi può darmi ?

rossimarko Profilo | Guru

Si è analogo, è che non avevo visto ancora la tua risposta quindi avevo postato un pezzo di esempio.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

ravalon Profilo | Expert

ok , allora lo lascio cosi perchè per me è più semplice e comprensibile....grazie del tuo aiuto ancora una volta.
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