Come modificare il codice?

mercoledì 08 luglio 2009 - 10.05

danvagna Profilo | Junior Member

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

ok dopo aver buttato li righe e righe di codice vi spiego quello che faccio e che vorrei ottenere...premetto che le query funzionano tutte e danno il loro risultato. In pratica prendo la settimana corrente degli anni 2009/08/07 controllando se è la settimana di pasqua, chiamo il metodo elaboraquery che altro non fa che restituire un datatable contenente il nome dell evento, quante volte si è svolto quel preciso evento nella settimana e quante persone vi hanno partecipato(questo lo ripeto per ogni anno). il vero problema qual è? io vorrei che nella pagina che mi si carica vi sia una label contenente il nome dell evento (tipo...fiera della polenta anche se con questo caldo non è il massimo...) e poi le 3 datatable bindate con 3 diverse gridview che mostrino i risultati delle 3 diverse interrogazioni...a questo punto dopo x secondi vorrei che la label mostrasse l evento successivo e le 3 gridview aggiornate coi nuovi valori e così via per tutti i valori dell array "eventi" e ,una volta arrivati all ultimo valore dell array, ricominciare dal primo eciclare così all infinito fino a che non chiudo la pagina web. Avevo pensato questa cosa
for (int j = 2; j <= righe-1; j++)//parto da 2 perchè i primi 2 valori sono righe vuote
{
String p = eventi[j].ToString();
Label2.Text = p;
gvdati.DataSource = elaboraQuery02(eventi, j);
gvdati.DataBind();
gvdati01.DataSource = elaboraQuery01(eventi, j);
gvdati01.DataBind();
gvdati02.DataSource = elaboraQuery(eventi, j);
gvdati02.DataBind();
if (j == (righe - 1))
j = 1;
System.Threading.Thread.Sleep(5000);
}

purtroppo non funziona..credo che il fatto sia che se uso thread.sleep l applicazione si mette semplicemente a dormire e basta senza var vedere i risultati. ho provato anche a scandire solo una volta l array senza ciclare ma il risultato non cambia. se invece ,al posto di j passo un numero a mia scelta e non metto thread.sleep, il tuto funziona alla perfezione...come potrei modificare il codice per far si che questa cosa dei 5 secondi possa funzionare?
beh se siete arrivati a leggere fino a qui senza odiarmi....non so proprio come ringraziarvi :D
ciao a tutti

P.S. uso c# e visual studio 2005(quindi framework 2.0)

Jeremy Profilo | Guru

Ciao Daniele.
Ma tempo fa non avevi aperto un thread nel quale ti avevo consigliato l'uso di un timer???
Thread.sleep non è quello che ti serve, tu hai bisogno che venga scatenato un evento ogni 5 secondi dove poter rieseguire l'associazione dei dati alla griglia.
Ciao

danvagna Profilo | Junior Member

hem si è vero..ma ci sto sbattendo la testa e non riesco a venirne a capo..per fortuna avevo anche altre paginette da fare e mi sono dedicato a quelle...ora mi resta solo questa e mi sto scontrando con questo titanico nemico :P

danvagna Profilo | Junior Member

una curiosità...ho visto che nel framework3.5 esiste nella toolbox l evento timer...siccome però io faccio finta di programmare col framework 2.0 non ho disponibile tale controllo! si può ovviare via codice(se si..come?) oppure devo passare a visual studio 2008? tendenzialmente preferirei restare col 2005(anche perchè se si risolve questo problema del timer avei finito questo progettino casalingo...e magari chissà non userò mai più c# o vs in vita mia...) ma se proprio non esiste alternativa...

Jeremy Profilo | Guru

Ciao Daniele.
Non mi risulta che il Timer non sia disponibile nella versione 2.0 del .NET Framework.
Ad ogni modo, puoi crearne un'istanza da codice
Private mioTimer as new Timer mioTimer.Enabled=true AddHandler mioTimer.Click, AddressOf mioTimer_Click

Facci sapere...
Ciao

danvagna Profilo | Junior Member

System.Windows.Forms.Timer mioTimer;
System.Timers.Timer mioTimer;
System.Threading.Timer mioTimer;

quale dovrei usare? mi sembra che System.Threading.Timer mioTimer; sia quello che faccia al caso mio...

mioTimer.Enabled = true;
mioTimer.Click += mioTimer_Click;

a questo punto dovrei creare un metodo?
public void mioTimer_Click(object sender, EventArgs e) { } e fargli fare quello che mi serve?

Jeremy Profilo | Guru

esatto

danvagna Profilo | Junior Member

ok tra oggi e domani ci provo vediamo che esce fuori...se vedete un esplosione su roma..sono io che ho scritto qualcosa di sbagliato

danvagna Profilo | Junior Member

for (int j = 2; j <= righe-1; j++) { DateTime dta = DateTime.Now.AddSeconds(5); while (DateTime.Now < dta) // simula 5 secondi { String p = eventi[j].ToString(); Label2.Text = p; gvdati.DataSource = elaboraQuery02(eventi, j); gvdati.DataBind(); gvdati01.DataSource = elaboraQuery01(eventi, j); gvdati01.DataBind(); gvdati02.DataSource = elaboraQuery(eventi, j); gvdati02.DataBind(); if (j == (righe - 1)) j = 1; } }

ma in questo modo dovrei aver simulato i 5 secondi senza usare neanche un timer(che sto letteralmente odiando!)
in questo modo mi sono reso conto però che se invece di far ciclare all infinito facessi un ciclo for che termina mi viene visualizzato il dato relativo solo all ultimo elemento caricato nel ciclo for...per far si che invece visualizzi tutti gli elementi che prende nel ciclo for come posso fare? devo per caso aggiungere la riga
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
perchè l ho fatto ma non funziona...

Jeremy Profilo | Guru

Ciao Daniele.
Ma quel codice .... dove l'hai scritto?? Nell'evento Tick del timer???
Se si .... devi eliminare il ciclo For ..... non ti serve!!! Il ciclo lo fa il timer (ogni 5 secondi) .... non so se mi spiego.

Facci sapere...
Ciao

danvagna Profilo | Junior Member

hem no...siccome proprio non riesco ad usare i timer sto cercando di fare tutto tramite codice..magari un codice brutto e che farebbe inorridire un programmatore esperto ma che almeno mi faccia terminare questo strazio di progettino :P
quindi il codice che ho postato l ho scritto nel page_loader

Jeremy Profilo | Guru

Ciao Daniele.
Effettivamente non è così facile come pensavo ..... non hai le esetnsioni Ajax???

Facci sapere....
Ciao

danvagna Profilo | Junior Member

no non ho le estensioni perchè uso vs2005...anche se girovagando per la rete mi sembra di aver cisto un pacchetto anche per il framework 2.0 . ora lo cerco di nuovo(ho socrdato di salvare la pagina ) e vedo se funziona...

Jeremy Profilo | Guru

Facci sapere....
Ciao

danvagna Profilo | Junior Member

http://www.asp.net/ajax/downloads/archive/

qui ho trovato l estensione ajax per il framework 2.0 ..installato e dopo aver riavviato vs2005 mi sono trovato nella toolbox la casella con le estensioni...adesso comincio a testare come vanno le cose...
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