Button e PAge_load

mercoledì 01 agosto 2007 - 09.27

RobyT83 Profilo | Newbie

Buongiorno a tutti,
il mio problema è il seguente, in una pagina ho due sub:

Protected Sub Button1_Click

Protected Sub Page_Load

Nella button_click ho un solo response.redirect, mentre nel page_load faccio una serie di controlli su dei dati.

Facendo il debug della pagina ho notato che quando schiaccio il bottone, prima di eseguire le istruzioni inserite nella sub button_click, mi va a elaborare prima il page_load, scombinando il settagio dei mie controlli.
Come posso fare per far si che appena schiaccio il bottone, mi vada ad eseguire direttamente il codice del bottone?

alx_81 Profilo | Guru

>Buongiorno a tutti,
Ciao!

>il mio problema è il seguente, in una pagina ho due sub:
>Protected Sub Button1_Click
>Protected Sub Page_Load
>
>Nella button_click ho un solo response.redirect, mentre nel page_load
>faccio una serie di controlli su dei dati.
>Facendo il debug della pagina ho notato che quando schiaccio
>il bottone, prima di eseguire le istruzioni inserite nella sub
>button_click, mi va a elaborare prima il page_load, scombinando
>il settagio dei mie controlli.
E' la normale scala di esecuzione degli eventi..

>Come posso fare per far si che appena schiaccio il bottone, mi
>vada ad eseguire direttamente il codice del bottone?
Siccome quando premi il tasto fai il cosiddetto POSTBACK, puoi controllare nella load il fatto che tu abbia scatenato la submit.

Protected Sub Page_Load .... If Not Page.IsPostBack Then ' fai quello che devi fare per la pagina End If End Sub

In questo modo, appena premi il bottone, la proprietà IsPostBack sarà True e tutto quello all'interno di quell'If non verrà eseguito ..
Ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

RobyT83 Profilo | Newbie

Scusa se ho omesso questa cosa, io nel page_load ho l'if che controlla PAge.Ispostback, ma ho anche l'else in quella stessa if, quindi quando clicco sul bottone mi va a fare l'else e li scombina tutti i piani.

Wamba Profilo | Expert

Non puoi.
il "lato server" di una pagina aspx non è persistente nel tempo e ad ogni postback deve essere riaffrontato completamente. Per far si che alcune operazioni vengano eseguite solo dopo un postback devi utilizzare Page.IsPostBack. Questo flag dell'oggetto pagina è valorizzato a false al caricamento, a true quando la pagina viene ricaricata a seguito di un postback, come la pressione di un pulsante. Quello che ti consiglio è di inserire le operazioni di inizializzazione che devono essere eseguite solo al primo caricamento all'interno di un:

C#: if(! Page.IspostBack) { //Operazioni da fare al caricamento ... } // Operazioni da fare sempre


VB: IF (NOT Page.Ispostback) THEN 'Operazioni da fare al caricamento ... END IF 'Operazioni da fare sempre

In ogni caso ti consiglio di dare un'occhiata a questo indirizzo:
http://msdn2.microsoft.com/en-us/library/ms178472.aspx
è molto importante per lavorare in asp.net capire il ciclo di vita di una pagina :)
Se non hai capito qualcosa o hai bisogno di chiarimenti chiedi pure.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

Wamba Profilo | Expert

Scusa alx_81, non volevo subentrare . Quando ho iniziato a scrivere il messaggio non avevi ancora risposto .
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

RobyT83 Profilo | Newbie

Immaginavo che fosse una cosa del genere, il problema come dicevo sopra che io l'if l'ho fatta, ma nella stessa if ho anche l'else che mi andava a settare delle drop se cliccavo su queste, ma non avevo tenuto conto del bottone.

Ma un funzione che verfica se il postback è stato attivato alla pressione di un bottone esiste?

alx_81 Profilo | Guru

>Immaginavo che fosse una cosa del genere, il problema come dicevo
>sopra che io l'if l'ho fatta, ma nella stessa if ho anche l'else
>che mi andava a settare delle drop se cliccavo su queste, ma
>non avevo tenuto conto del bottone.
>
>Ma un funzione che verfica se il postback è stato attivato alla
>pressione di un bottone esiste?
Se scateni l'evento sai che è stato il bottone, ma cmq devi passare prima dalla load.. Quindi direi di no..
Devi trovare un modo per evitare di "rompere" tutto..
Potresti pensare di fare un metodo in cui metti il codice del buttonclick e poi richiamarlo nell'else dell'if della tua page_load..


@Wamba
eheh, no problem.. i forum sono fatti per discutere, e non necessariamente in due.. Considerato che poi quello che dici è corretto e scritto bene, meglio ancora!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Wamba Profilo | Expert

>@Wamba
>eheh, no problem.. i forum sono fatti per discutere, e non necessariamente
>in due.. Considerato che poi quello che dici è corretto e scritto
>bene, meglio ancora!
>
>Alx81 =)
>
>http://blogs.dotnethell.it/suxstellino

grazie

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

RobyT83 Profilo | Newbie

ragazzi grazie delle vostre risposte ho risolto il mio problema facendo un controllo su chi scatenasse il PostBack, quindi se il postback viene da una drop mi lavora in un modo, altrimenti va ad eseguire le istruzioni presenti nella sub button_click.

Ciao a tutti.
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