Controllo timer ajax su pagina asp.net evento tick per 2 volte

venerdì 24 ottobre 2008 - 10.47

amstrad Profilo | Junior Member

Ciao a tutti ragazzi
il problema è quello che ho messo in oggetto.

il listato qui è dove definisco il timer

<ajax:UpdatePanel ID="ajPnlUpdSegnalazioni" runat="server">
<ContentTemplate>
<div>
contenuto
</div>
<div runat="server" >
contenuto
</div>
</ContentTemplate>
<Triggers><ajax:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</ajax:UpdatePanel>
<ajax:Timer runat="server" ID="Timer1" Interval="30000" OnTick="Timer1_Tick" EnableViewState="true"></ajax:Timer>

mentre l'evento timer1_tick nella pagina vb peril momento è vuoto ma noto che in debug ci passo comunque due volte, qualcuno sa come posso rimediare? ho davvero bisogno che passi di li una volta sola grazie mille a tutti

rossimarko Profilo | Guru

Ciao,

hai già verificato che l'evento non sia agganciato anche da codice? Ho visto che il nome della funzione è inserito nell'aspx, se per caso lo hai configurato anche da codice questa potrebbe essere la causa dell'anomalia.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

amstrad Profilo | Junior Member

nessun richiamo da codice, ma per evitare che lo abbia messo e me ne sia scordato ho completamente svuotato l'interno del metodo, quindi sicuramente non c'è nessuno dal vb che lo richiama

rossimarko Profilo | Guru

Ma il metodo non ha la parola chiave Handles vero?

Puoi mandarci il pezzo di codice oltre che la pagina aspx così eventualmente facciamo una prova..
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

amstrad Profilo | Junior Member

veramente si il metodo ha l'handles

Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
Timer1.Enabled = False
'CODICE GESTIONE
Timer1.Enabled = True
End Sub

Se è questo il problema sapresti dirmi anche il perchè? sono nuovo di vb, ho sviluppato parecchio in c# dove la definizione dei metodi avviene in modo differente

rossimarko Profilo | Guru

Allora il problema è quello. In pratica hai agganciato 2 volte l'evento.

Mi spiego meglio. Per agganciare un evento di un controllo ci sono due metodi. Il primo è dichiare il nome della funzione nell'aspx (valido sia per c# che vb.net), il secondo è agganciarli da codice.
Per agganciarli da codice in c# si usa l'operatore += e si dichiara la funzione. In vb.net invece l'interfaccia consente di agganciare l'evento semplicemente selezionando nelle combo sopra all'editor del codice il controllo e il nome dell'evento. Una volta selezionato l'evento verrà creata una funzione con la parola chiave handles seguita dal nome dell'evento. Questo indica che la funzione aggancerà l'evento del controllo specificato.

Se tu dichiari il metodo con l'handles e metti il nome della funzione anche nell'aspx il metodo verrà richiamato due volte. E' una cosa che accade anche in c#, se dichiari il metodo nell'aspx e poi lo agganci da codice verrà richiamato due volte.

Considera che di solito in vb la dichiarazione nell'aspx non si usa e si utilizza direttamente l'handles, quindi nel tuo caso basta togliere dall'aspx il nome della funzione e dovrebbe sistemarsi tutto
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

amstrad Profilo | Junior Member

grazie mille, calcola che avevo aggirato il problema con un oggetto in sessione la prima volta e il controllo dell'oggetto la seconda, ma stava veramente brutto... hai contribuito a non scrivere dello schifo grazie mille
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5