Fermare il caricamento di una pagina alla pressione di un imagebutton

martedì 23 febbraio 2010 - 16.56

ravalon Profilo | Expert

Salve ragazzi...ho di nuovo un dubbio amletico (per me ovviamente)....

Ho un Image Button che mi manda dei dati verso il raccoglitore finale.

Vorrei vericare all'evento CLICK alcune cose e se non sono verificate vorrei che non si venisse ridirottati da nessuna parte....o meglio ancora, che si venisse ridirottati solo se il controllo va a buon fine....

....attualmente anche se mi fa la verifica col codice che ho aggiunto, la pagina è già partita sparata per il caricamento della destinazione finale....lo vorrei impedire...si può ?

paoval72 Profilo | Senior Member

Ciao, puoi postare un po' di codice?
PV

fguida Profilo | Expert

Non ti basta mettere una "If" sotto l'evento onclick scatenato?
Francesco

ravalon Profilo | Expert

Ciao ragazzi e grazie per le risposte.

Posto un pezzetto di codice relativamente al bottone (non credo serva altro, in caso contrario chiedetemi pure!)

<asp:Panel ID="PanelPagamento" runat ="server">
<tr>

<td width="100%" valign="middle" align="center" class="TableBaseCenter">
<asp:ImageButton ID="ImgBtnVaiAllaCassa" runat="server" skinid="btnVaiAllaCassa" ToolTip="<%$Resources:ResourceCatalogo, strVaiAllaCassa%>" PostBackUrl="Acquista.aspx" CausesValidation ="false" />
</td>

</tr>
</asp:Panel>

Come vedete ha un postbackurl che ne comanda il passaggio alla pagina...
Ecco...io vorrei che il passaggio verso acquista.aspx avvenisse SOLO dopo che ho fatto un controllo su alcuni valori della pagina per vedere se sono stati valorizzati....

fguida Profilo | Expert

Potresti legare all'evento OnClick dell'ImageButton un metodo che implementerai nel codice sotto, inserisci la if ed a seconda del risultato applichi un response.redirect.....alla pagina desiderata.
Francesco

ravalon Profilo | Expert

E per far si che non si muova di li come faccio ? devo togliere il postbackurl sostanzialmente e ridirezionare via codice ??

ravalon Profilo | Expert

Ho provato a fare cosi nell'evento click del bottone, togliendo il postbackurl

If CONDIZIONE Then
Response.Redirect("~/Catalogo/Acquista.aspx", False)
Else
'niente
End If

Però mi fa il refresh su se stessa.... anche se la condizione è verificata non mi fa il redirect...

fguida Profilo | Expert

C#

if (Condizione)
{
Response.Redirect("Default.aspx");
}
Deve funzionare per forza...

Il postBack la pagina lo fa comunque essendo un ImageButton, io per evitare di ricaricare tutta la pagina di solito uso gli UpdatePanel
Francesco

ravalon Profilo | Expert

Ho provato anche cosi come dici tu ma non va...però noto che il mio VWD ha qualche problema, infatti non mi fa più il debugger, i bottoni di start,stop e pausa si disattivano pur visualizzando la pagina web.....sarà quello ?

fguida Profilo | Expert

Non ho capito.....
Se non ti va il debug (lanci con la freccia verde?) puoi sempre aprire il sito con View in Browser cliccando sulla aspx con il tasto destro del mouse e poi attacchi il Debug al processo (Debug\Attach to process...)
Francesco

ravalon Profilo | Expert

Ah...non ho idea di come si faccia...me lo spieghi passo passo ? mi sarebbe utilissimo...

Si lancio dalla freccia verde!

fguida Profilo | Expert

Ti posizioni sulla aspx , poi con il tasto destro del mouse fai "View in Browser"
Vedrai che si aprirà un istanza del browser(ie od altri) ed in basso a destra parte l'icona del Cassini, con il nome dedella porta a cui si aggancia.
Ora passi in visual studio e vai su "Debug"; testo sinistro e vai su Attach to process...si apre una finestra e cerchi il processo(di solito WebDev..) con la porta cercata prima (sotto la colonna title: ASP.NET Development...)


Francesco

ravalon Profilo | Expert

Appena me lo rifà provo....ora però è ripartito tutto (dopo aver spento il pc)....e comunque non mi funziona....non capisco...

l'IF then l'ho messo nell'evento CLICK e non OnClick....è corretto ?

fguida Profilo | Expert

esatto... evento OnClick definito nell'aspx, poi nel codice sotto agganci il nome che hai deciso...tipo:



<asp:ImageButton ID="btnPrint" ImageUrl="~/Img/Print.jpg" OnClick="btnPrint_Click"........


protected void btnPrint_Click(object sender, EventArgs e)
{
}

E' c# ma basta che lo cambi :)

Mettiti un break point e vedi cosa accade.

Ciao
Francesco

ravalon Profilo | Expert

Con

Public Sub btnAcquistaControlla(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)

If 0 = 0 Then
Response.Redirect("~/Catalogo/Acquista.aspx")
Else
'niente
Response.End()
End If

End Sub

Non funziona....

con il postbackurl funziona....
Mi verifica la condizione e passa dalla riga del redirect ma non fa niente...ricarica la pagina attuale....

Forse perchè il bottone è dentro un UpdatePanel ?

fguida Profilo | Expert

L'update panel ti fa il render solo del pezzetto di codice incluso nello stesso, senza reenderizzare tutta la aspx...postami la pagina che la provo, altrimenti così mi resta difficile capire cosa hai creato
Francesco

ravalon Profilo | Expert

postare tutta la pagina è un po un problema...ci sono tanti di quei controlli e codice incluso da altri files che ti chiederei di fare davvero troppo a capire cosa ho fatto...

Domani riguardo a mente lucida il tutto, magari capisco dove sta' l'inghippo...

Intanto ti ringrazio tanto per il tuo aiuto !

fguida Profilo | Expert

Guarda...io ho una pagina aspx ove un ImageButton esegue la cancellazione di alcuni dati dopo aver verificato alcune cose; esso è contenuto in un UpdatePanel e se richiamo all'interno della IF una Response.Redirect essa viene eseguita senza problemi. Idem se l'esecuzione deve farmi rimanere sulla pagina "madre".
Questo è il codice:
ASPX
<asp:UpdatePanel ID="pnlPanel" ChildrenAsTriggers="false" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:ImageButton ID="ibtDelete" CommandArgument='<%# Eval("ID") %>' OnClick="ibtDelete_Click"......
...

ASPX.CS
//Elimino un ID;
protected void ibtDelete_Click(object sender, ImageClickEventArgs e)
{
CONDIZIONE A
delete(id);
CODIZIONE B
Response.Redirect("Default.aspx");


}
Francesco

ravalon Profilo | Expert

Ci deve infatti essere qualcosa che non considero...anche io in questo stesso carrello col quale ho il problema ho dei bottoni per la cancellazione dei prodotti e prima di scatenare una reazione verificano la risposta dell'utente....e funziona alla perfezione....ora vedo di capirci 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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5