Tabella con date in C#

mercoledì 11 marzo 2009 - 21.07

danvagna Profilo | Junior Member

Ciao a tutti...da poco mi sono messo ad imparare C# e mi è sorto un dubbio su come poter realizzare la segunte cosa(lavoro in C# con visual studio 2005)
volevo creare una pagina web nella quale un utente può immettere diversi anni(non so...2000, 2001,2005,2020) e ottenere come output una tabella in cui per ogni anno vengano elencati tutti i lunedì dello stesso anno quindi ad esempio se immettesse 2000(per esempio diciamo che il primo lundì del 2000 era il 6 gennaio) vorrei una tbella con "2000" come nome della colonna e poi in ogni riga "6 gennaio", "13 gennaio"...."2 febbraio" e così via fino a dicembre. Secondo vio è possibile fare una cosa del genere? siete la mia ultima speranza..
ciao e grazie a tutti
daniele
P.S. fino al 20 marzo non potrò connettermi perchè sarò fuori..spero di trovare tante soluzioni quando torno :D :D :D

rossimarko Profilo | Guru

Ciao,

una volta reperito il primo lunedì della settimana per avere tutti gli altri basta sommare 7 giorni..

DateTime dtDataSuccessiva = dtPrimoLunedi.AddDays(7);
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

paoval72 Profilo | Senior Member

Ciao, ho pensato a questa procedura da scatenare sull'onclick del tuo bottone di invio data (ovviamente va registrato tra gli using il System.Data) .

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

Lato client, mi creo il mio gridview: ho scelto un boundfield per velocizzare:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="ANNO" ShowHeader="true"/> </Columns> </asp:GridView>

PV

balfaz Profilo | Expert

hey paoval!!!, mentre leggevo il tuo codice come si fosse un libro di Tom Clancy's, potevo sentire l'odore dell'inspirazione..... ha, ha, ha

Bel lavoro

Dove troverai sempre una mano disposta ad aiutarti è nell'estremo del tuo proprio braccio

paoval72 Profilo | Senior Member

Eeeeh... Vecchio cuore da giornalista (sportivo). E cervello informatico da 90enne! Così mi tocca prima ripassare (o imparare) tutto quello che poi suggerisco!
Buon diverti-lavoro a tutti!
PV

danvagna Profilo | Junior Member

Grazie Paoval!! non ho parole per la tua gentilezza!! :)

danvagna Profilo | Junior Member

ciao a tutti..torno con una domanda...(forse il c# non fa per me:)) se volessi provare a modificare il codice di paoval per far si che il datatable contenga n colonne (a seconda di quante date inserisco da input) e quindi come risultato avere...data1 e tutti i lunedì come prima colonna,data2 e lunedì come seconda colonna ecc ecc ?
ho provato a modificare il codice nel modo seguente ma il risultato è che mi riempie la colonna relativa alla prima data inserita con tutti i lunedì e mi crea le altre colonne relative alle altre date però vuote,prive dei lunedì. grazie ancora a tutti!! :)


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

danvagna Profilo | Junior Member

in parte ho risolto il problema in questo modo

if (Convert.ToInt32(ndt2.DayOfWeek) == 1)//lunedì { DataRow drw = dt.NewRow(); //ho scelto la "M", che restituisce tipo: "01 Aprile". drw[s] = ndt2.ToString("M"); dt.Rows.Add(drw); dt.AcceptChanges(); }

ora il problema è che i risultati vengano visualizzati non uno accanto all altro come vorrei bensì nelle prime 52 righe elenca i lunedì del primo anno poi dalla riga 53 alla 105 elenca i lunedì del secondo anno lasciando le prime 52 righe vuote e così via per i successivi anni

paoval72 Profilo | Senior Member

Ciao. Il problema sta nel fatto che non posso aggiungere così una nuova colonna, perchè sfalserei i dati. Infatti, se al 1° giro inserisco nella colonna 1, al 2° , se creo la colonna 2, che valore avrà la colonna 1? Nessuno, perchè riempirei solo la 2a colonna, mentre continuo a creare righe.
per semplicità, potresti creare dei nuovi datatable suddivisi per anno da inserire ogni volta in un dataset padre.

PV

danvagna Profilo | Junior Member

grazie paoval..sei sempre disponibile e gentile! ora mi metto all opera! buona giornata

paoval72 Profilo | Senior Member

Ciao, l'idea dei datatable era un'abile mossa per prendere tempo...
Ti propongo questa soluzione, che ho provato con 4 dati e funziona:

1) Nell'html, la gridview ovviamente diventa:
<asp:GridView ID="gvXX" runat="server" AutoGenerateColumns="True"></asp:GridView>
Ovvero, le colonne le creo in automatico, non sapendo quante saranno

2) lato server, aggiungo dei controlli per evitare di aggiungere righe se ne esistono già. Riprendo solo la parte del codice che modifico, per non ripetere:

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

Il resto del codice resta come prima.
Dimmi se funziona.

PV

danvagna Profilo | Junior Member

beh a questo punto non posso fare altro se non inchinarmi di fronte alla tua disponibilità! spero proprio di riuscire a diventare così abile come lo sei tu!
grazie ancora!!

danvagna Profilo | Junior Member

finalmente sono riuscito a creare questa piccola applicazione dei lunedì e l ho ampliata con altri dati che potevano essermi utili...devo dire che è esaltante vedere che ,grazie al mix di suggerimenti e impegno, le cose funzionano!! ora volevo provare ad alzare un pò il tiro (lavoro sempre con c# e visual studio 2005):
vorrei realizzare un eseguibile che una volta eseguito apra mozilla firefox(facendogli aprire un numero n di schede per semplicità diciamo 3). vorrei che quindi mi visualizzi la 1a scheda e faccia un refresh ogni x secondi dei dati presenti nella scheda(i dati dovrebbero essere i risultati di una query su un database che ho nel mio hard disk) e poi dopo 2 minuti passi alla 2a scheda(stessa cosa anche per questa ...refresh e passaggio alla 3a scheda) e quindi dalla 3a scheda ritorni alla 1a e vada avanti così finchè non viene chiuso firefox . è secondo voi possibile realizzare una cosa del genere? (per ora sto lavorando su un nuovo progetto sito web ASP.NET...posso continuare qui o devo creare un nuovo progetto?)
grazie a tutti e buona giornata!
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