Intercettare il pulsante invio in aspx

martedì 26 aprile 2011 - 11.48

trinity Profilo | Guru

Ragazzi buongiorno,
ho creato una form di autenticazione utente con due pulsanti.
Un pulsante "Accedi" ed uno "Registrati"
in pratica tutto il codice che ho scritto in entrambi i pulsanti (scritto in vbnet) funziona perfettamente...il problema sta quando cerco di autenticarmi e invece di premere il pulsante "Accedi" premo l'invio della tastiera. Avviene il refresh della pagina e bsta, io invece vorrei che eseguisse lo stesso codice che si esegue nel click del pulsante...Come posso fare?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Ragazzi buongiorno,
Ciao

>ho creato una form di autenticazione utente con due pulsanti.
>Un pulsante "Accedi" ed uno "Registrati"
>in pratica tutto il codice che ho scritto in entrambi i pulsanti
>(scritto in vbnet) funziona perfettamente...il problema sta quando
>cerco di autenticarmi e invece di premere il pulsante "Accedi"
>premo l'invio della tastiera. Avviene il refresh della pagina
>e bsta, io invece vorrei che eseguisse lo stesso codice che si
>esegue nel click del pulsante...Come posso fare?
se il pulsante accedi è un submit button l'invio viene preso in automatico.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

No è un button classico perchè esegue una stored

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>No è un button classico non quello html
ehm.. cosa significa? se sei su web è sempre un pulsante html..
c'è da capire se è un submit o no. Guarda l'html prodotto, nel type dell'input c'è BUTTON o SUBMIT?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

c'è scritto button ;)
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>c'è scritto button ;)
perfetto.. o meglio.. il problema è quello.
Se quel pulsante lo fai submit vedrai che prende l'invio in auto.
Come lo crei il pulsante?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Allora neglio oggetti vbnet nella sezione html c'è il pulsante input submit ho provato a metterlo sulla pagina ma poi come faccio ad esequire questa stored?

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

che andavo ad eseguire nell'evento click del button
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Allora neglio oggetti vbnet nella sezione html c'è il pulsante
>input submit ho provato a metterlo sulla pagina ma poi come faccio
>ad esequire questa stored?
se tu trascini un BUTTON dalla toolbox, quello di default, ti farà un type="button" ma dovrebbe lanciare la dopostback e intercettare l'invio normalmente.
Niente di più.. Così gestisci sia la postback sia l'onclick, sia l'invio.. dove ti blocchi?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Tra le proprietà del button nel menu a destra per intenderci ci sono due voci: OnClientClick e PostBackUrl......sarebbero questo quello che intendi te?

poi io il click l'ho gestito così: vedi il codice:

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


Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Tra le proprietà del button nel menu a destra per intenderci
>ci sono due voci: OnClientClick e PostBackUrl......sarebbero
>questo quello che intendi te?
no, di default, trascinando un button sulla pagina aspx, viene messo in fase di render una chiamata ad una funzione js, la doPostBack.
Prova a trascinare un button e poi a vedere la sorgente della pagina.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

>>Tra le proprietà del button nel menu a destra per intenderci
>>ci sono due voci: OnClientClick e PostBackUrl......sarebbero
>>questo quello che intendi te?
>no, di default, trascinando un button sulla pagina aspx, viene
>messo in fase di render una chiamata ad una funzione js, la doPostBack.
>Prova a trascinare un button e poi a vedere la sorgente della
>pagina.

secondo me te ti riferisci ad un altro tipo di button...cmq ora ho fatto la prova di cui penso ti riferisca e sul sorgente trovo questo: <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" /> di default e premendo doppo click me genera questo codice anche: function Button1_onclick() { }

ora se dovessi utilizzare questo tipo di button come faccio ad eseguire tutto il codice della stored che ti ho postato sotto?, passare i parametri che vengono dalle text, le session ecc......

Io ho usato il button vero e proprio di vb net
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>secondo me te ti riferisci ad un altro tipo di button...cmq ora
>ho fatto la prova di cui penso ti riferisca e sul sorgente trovo
>questo: <input id="Button1" type="button" value="button" onclick="return
>Button1_onclick()" /> di default e premendo doppo click me
>genera questo codice anche: function Button1_onclick()
>{ }
>ora se dovessi utilizzare questo tipo di button come faccio ad
>eseguire tutto il codice della stored che ti ho postato sotto?,
>passare i parametri che vengono dalle text, le session ecc......
>Io ho usato il button vero e proprio di vb net
se usi il button allora c'è una proprietà UseSubmitBehavior che impone il render come submit button (se è a true).
Se sei su una textbox o su un altro controllo, premendo invio, viene fatta la submit in postback e quindi viene eseguito il codice lato server.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Sai qual'è il problema è che la proprietà UseSubmitBehavior del button è già impostata su True

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Sai qual'è il problema è che la proprietà UseSubmitBehavior del
>button è già impostata su True
ok allora, se sei su qualunque altro controllo, l'invio lancia la postback del pulsante.
Allora, se è a true il render ti deve creare type="submit" mentre tu mi hai detto che è "button".
Se è a true e produce un submit, l'invio da ogni controllo nella pagina scatena in automatico la submit, tutti i browser testati..

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Guarda ti faccio vedere lo screenshot del compilatore così vedi che tipo di button uso fa parte delle elementi standard di vbnet 2010 che si trovano nel menu di sinistra...è anche evidenziato il codice originale.....

Ciao


1920x1080 530Kb


Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Guarda ti faccio vedere lo screenshot del compilatore così vedi
>che tipo di button uso fa parte delle elementi standard di vbnet
>2010 che si trovano nel menu di sinistra...è anche evidenziato
>il codice originale.....
ok, stiamo parlando di due cose differenti. Provo a spiegarmi meglio.
Quando parlo di render, intendo l'html che viene prodotto quando visualizzi il sito.
Non il metalinguaggio che ti propone Asp.Net..
Quindi, prova a controllare il render html e capire di che tipo è quel bottone.
Vedrai che è un type="submit". In tal caso l'invio scatena già quello che ti serve.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

hai ragione ecco il codice html della pagina:


<td style="text-align: left"> <input type="submit" name="Button3" value="Accedi" id="Button3" style="text-align: left" /> </td>

ma cmq se sto sulle textbox e premo invio non mi funziona il codice della store scritto nell'evento click in vb, mi esegue solo il refresh della pagina e basta :(

ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>ma cmq se sto sulle textbox e premo invio non mi funziona il
>codice della store scritto nell'evento click in vb, mi esegue
>solo il refresh della pagina e basta :(
sì, fai solo il pageload. Perchè da quanto sembra dallo screenshot che mi hai allegato, non leghi l'evento al pulsante.
Quindi hai il metodo click, ma non è legato al pulsante. Negli eventi (proprietà ed icona fulmine con focus sul pulsante) vedi il click gestito?
In caso contrario fai doppio click sull'evento e ti verrà creato il metodo.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Quello che dici te è in C#, cmq nell'evento click io ci ho scritto sempre il codice ossia questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Quello che dici te è in C#, cmq nell'evento click io ci ho scritto
in effetti non so se in vb è uguale..
Dovresti provare a fare debug, mettendo un breakpoint all'interno della gestione dell'evento.
Se non viene fermato lo script nel breakpoint, significa che quell'evento non è collegato per qualche strano motivo.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Ho messo il debug sul codice che ti ho postato, lo eseguo ma non passa nulla...si attiva solo se clicco sul pulsante

cmq ho risolto in questo modo dimmi se va bene:

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

Ps ti ho allegato il file nell'altro post per il discorso dell'autoincrement della textbox durante la scrittura


Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Ho messo il debug sul codice che ti ho postato, lo eseguo ma
>non passa nulla...si attiva solo se clicco sul pulsante
certo è l'evento del click sul pulsante che scatena quella procedura.
Ancora non ho capito il problema sai?
Se premi il pulsante mi hai detto che in debug passa dal breakpoint. Hai proseguito con il debug per controllare se fa quello che ti aspetti?

>Private Sub Autenticazione_Init(ByVal sender As Object, ByVal
che cos'è Autenticazione? Non eravamo al pulsante? Mi stai facendo un po' di confusione
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Il problema è che se clicco sul pulsante giustamente il mio codice funziona, se invece scrivo la username e password e stando sempre sulla textbox premo il pulsante invio non mi esegue il codice scritto nell'evento click del button ma mi esegue un semplice refresh della pagina....pensavo che mettendo il codice scritto nel button, nell'evento init della form aspx e gestendo il postback con una if, avessi risolto ma non è così mi genere sempre lo stesso errore :(

La cosa bella è che in un'altra form aspx che autentica l'accesso degli amministratori ad una sezione con accesso limitato ho messo sempre un button con all'interno una semplice redirect ma se premo il tasto invio funziona perfettamente...ora nasce da porre il perchè non funziona dato che entrambi i button da un punto di vista del codice html sono uguali?

Ti allego una cartella dove all'interno trovi due form aspx. La prima si chiama admin_access e funziona sia il click sul button che l'invio, la seconda form si chiama autenticazione e qui il button accedi funziona solo se viene cliccato, se si preme invio non viene processato alcun codice.

Puoi darci una controllata?

Ciao e grazie

www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>La cosa bella è che in un'altra form aspx che autentica l'accesso
>degli amministratori ad una sezione con accesso limitato ho messo
>sempre un button con all'interno una semplice redirect ma se
>premo il tasto invio funziona perfettamente...ora nasce da porre
>il perchè non funziona dato che entrambi i button da un punto
>di vista del codice html sono uguali?
probabilmente il problema sta nella presenza di due button, che per come vengono renderizzati, ho paura che siano entrambi dello stesso tipo.
In quel caso dovrai trappare la pressione del tasto invio con js:
http://dev.kanngard.net/Permalinks/ID_20050426091851.html

intercettando l'invio poi scegli tu se fare la submit o meno, oppure puoi effettuare la pressione del tasto (lanciando la funzione js che lancia il pulsante di default)..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

nn=(document.layers)?true:false; ie=(document.all)?true:false; function keyDown(e) { var evt=(e)?e:(window.event)?window.event:null; if(evt){ var key=(evt.charCode)?evt.charCode: ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0)); if(key=="13") document.forms[0].submit(); } } document.onkeydown=keyDown; if(nn) document.captureEvents(Event.KEYDOWN);

questo sarebbe il codice che dovrei inserirlo sotto vb net? oppure no? o nella textbox? oddio ti dico la verità mi sto perdendo :(

ma questo è lato server io devo intercettare lato client....

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>questo sarebbe il codice che dovrei inserirlo sotto vb net? oppure
>no? o nella textbox? oddio ti dico la verità mi sto perdendo
>:(
>
>ma questo è lato server io devo intercettare lato client....
no quello è javascript, e va messo lato client, è uno script che intercetta la pressione del tasto invio.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Perdonami ma non riesco proprio a capire dove inserirlo per poi richiamare la stored di autenticazione...ti allego il form aspx il pulsante che genera la stored che autentica si chiama button3

Ps una domanda che non centra niente con questo tema....l'utilizzo dello using per gestire le connessioni e le stored si deve utilizzare anche su windowsapplication lato desktop?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Perdonami ma non riesco proprio a capire dove inserirlo per poi
>richiamare la stored di autenticazione...ti allego il form aspx
>il pulsante che genera la stored che autentica si chiama button3
ti faccio una paginetta html che cattura l'invio.

>Ps una domanda che non centra niente con questo tema....l'utilizzo
>dello using per gestire le connessioni e le stored si deve utilizzare
>anche su windowsapplication lato desktop?
using è per il framework e gestisce la dispose per bene (anche evitando che ti scordi di farlo tu lato codice), quindi va bene per ogni tipo di progetto che usa .net.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Ciao Ale thx per la risposta sulla using....mica hai avuto tempo di vedere il mio file allegato sulla questione dell'intercettazione dell'invio?

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Ciao Ale thx per la risposta sulla using....mica hai avuto tempo
>di vedere il mio file allegato sulla questione dell'intercettazione
>dell'invio?
visto che hai scoperto jQuery, guarda un po' qui:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Ale scusa ma non trovo il post dove discutemmp della usign così al volo ti faccio questa domanda in questo post tanto è solo una.
Nei programmi lato client (windowsapplication) di solito il la connessione al database la apro all'avvio della prima form e poi lo chiudo alla sua chiusura quindi lavoro con tutte le altre form ecc...in pratica faccio un db.Open e poi un Db.Close...
Nello Web mi hai fatto fare così:

Dim conString = ConfigurationManager.ConnectionStrings("liceoConnectionString")
Dim strConnString As String = conString.ConnectionString
Using scope As New TransactionScope()
Using db As New SqlConnection(strConnString)
db.Open()
................................

nella winodwsapplication devo ripetere sempre la stessa cosa? Oppure faccio come di solito procedo io ossia apro la connectionstring all'inizio della prima form e poi la chiudo alla fine?
Ma se fosse il TransactionScope non chiude già lui la connessione?
Non vorrei aprire diacimila volte il db e appesantire le stored e le connessione che effettuo anche perchè in un evento avvolte eseguo anche + stored di fila

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Nei programmi lato client (windowsapplication) di solito il la
>connessione al database la apro all'avvio della prima form e
>poi lo chiudo alla sua chiusura quindi lavoro con tutte le altre
>form ecc...in pratica faccio un db.Open e poi un Db.Close...
>Nello Web mi hai fatto fare così:
>nella winodwsapplication devo ripetere sempre la stessa cosa?
non aprire una sola connessione. Stai tranquillo, c'è il pool di ado.net, per ogni chiamata vai a db e riapri la connessione.

>Ma se fosse il TransactionScope non chiude già lui la connessione?
il trasaction scome chiude la transazione non la connessione.

>Non vorrei aprire diacimila volte il db e appesantire le stored
>e le connessione che effettuo anche perchè in un evento avvolte
>eseguo anche + stored di fila
non appesantisci nulla, ado.net riusa la "medesima connessione".
http://msdn.microsoft.com/en-us/library/8xx3tyca(v=VS.90).aspx

se la risposta ti è stata di aiuto, accetta per favore che chiudiamo il thread

>Ciao
ciao
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Quindi intendi che anche in windowsapplication posso fare così tutte le volte che voglio anche di fila....


Dim conString = ConfigurationManager.ConnectionStrings("liceoConnectionString")
Dim strConnString As String = conString.ConnectionString
Using scope As New TransactionScope()
Using db As New SqlConnection(strConnString)
db.Open()
................................

mettendo un file config dove all'interno vi è la connectionstring reale


Ciao e grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Quindi intendi che anche in windowsapplication posso fare così
>tutte le volte che voglio anche di fila....
sì, ma leggi bene quello che ti ho passato
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Ale apro un altro post per continuare a parlare di questo argomento ;)



Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

hyoxHry Profilo | Newbie

Hei credo di aver trovato la soluzione al tuo problema, se nn ti interessa per forza sfruttare l'evento del tuo button e magari riusi il codice nelle'evento keyPress della tua textBox, puoi usare questo:

If e.KeyChar = ControlChars.Cr Then
istruzioni
End If

se entra dentro la condizione vera della if allora significa che è stato premuto il pulsante invio :)

Hriscu Sebastian
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