raggruppamento date con javascript

venerdì 08 gennaio 2010 - 11.27

miomiomio Profilo | Junior Member

ciao a tutti e buon anno nuovo!

vorrei chiedervi un aiuto.

ho una pagina con una tablella e nella prima colonna ho tutta una serie di date in ordine decrescente nel formato gg/mm/aaaa.

è possibile fare in modo che uno script analizzi anno e mese e raggruppi le righe della tabella suddividendole per mese e mostrando le date del mese corrente e solo il mese di appartenenza delle altre, invece che tutto l'elenco delle date completo?

es:

se la colonna continene le date seguenti:
07/01/2010
05/01/2010
04/01/2010
20/12/2009
19/12/2009
14/12/2009
11/11/2009
10/11/2009
09/11/2009
14/10/2009
13/10/2009
12/10/2009

vorrei che mi venisse mostrato

07/01/2010
05/01/2010
04/01/2010
Dicembre
Novembre
Ottobre


e cliccando sui mesi che si espandessero visualizzando le date



è troppo difficile?

se potete aiutatemi perche io nn sono in grado di realizzarlo...

Grazie

alx_81 Profilo | Guru

>ciao a tutti e buon anno nuovo!
Ciao e auguri anche a te.

>è troppo difficile?
da dove ti arrivano i dati? Forse potresti pensare di creare già qualcosa prima di scrivere i dati sul presentation layer

>Grazie
di nulla!

--

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

miomiomio Profilo | Junior Member

i dati provengono da un database access tramite un recordset

alx_81 Profilo | Guru

>i dati provengono da un database access tramite un recordset
Diciamo che puoi intervenire un po' dove meglio credi.
Potresti ciclare sul recordset ordinato disconnesso e, a rottura sul mese/anno, creare una stringa che corrisponde al mese, andando a creare una struttura tipo accordion o treeview in cui ogni nodo è il mese e al di sotto del quale hai i giorni. Se riuscissi a creare una struttura fatta così:

MESE 1
giorno 1
giorno 2
MESE 2
giorno 1
...

poi potresti applicare alcuni controlli di terze parti (jquery ad esempio) per ottenere un layout funzionale e gradevole.
Guarda ad esempio qui:
http://docs.jquery.com/UI/Accordion

--

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

miomiomio Profilo | Junior Member

scusami ma non ti seguo!!

come dovrei fare a fare il record set in quel modo?

alx_81 Profilo | Guru

>scusami ma non ti seguo!!
>come dovrei fare a fare il record set in quel modo?
il tuo recordset sarà ordinato per data discendente.
il tuo recordset dovrà essere disconnesso per evitare di rimanere connesso durante le operazioni di controllo.
dovrai fare un ciclo su di esso in cui controlli quando cambiano anno e mese, momento in cui dovrai creare la stringa del mese.
nel ciclo vai a creare l'html da preparare per il controllo di jquery ad esempio:

<div id="acc_Mesi"> <h3><a href="#">Gennaio 2010</a></h3> <div>07</div> <div>06</div> <div>05</div> <h3><a href="#">Dicembre 2009</a></h3> <div>31</div> <div>30</div> <div>29</div> <div>28</div> </div>

applica come da documentazione il plugin di jquery ed è fatta.
Nel ciclo, ti dovrai chiedere quando anno e mese cambiano. Per ogni ciclo, se cambiano anno e mese rispetto al record precedente, crei la linea dove c'è <h3>, se non cambiano, crei i <div> dei giorni.
--

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

miomiomio Profilo | Junior Member

il concetto l'ho capito.

adesso cercherò di trasformarlo in codice asp!!

grazie e...se non ci riesco, ti chiederò di nuovo aiuto mi sa!!

ciaoo

miomiomio Profilo | Junior Member

sto provando ma non so come fare il ciclo sul recordset

mi faresti un esempio di query con ciclo e interruzione?

nel db le date ce l'ho complete, va bene se per ricavarmi il numero del mese faccio così?

dim dataattuale, datasplit, meseestratto dataattuale=(Recordset1.Fields.Item("DataPresenza").Value) datasplit=split(dataattuale,"/") meseestratto= datasplit(1) %>

alx_81 Profilo | Guru

>sto provando ma non so come fare il ciclo sul recordset
>
>mi faresti un esempio di query con ciclo e interruzione?
>
>nel db le date ce l'ho complete, va bene se per ricavarmi il
>numero del mese faccio così?
>
>dim dataattuale, datasplit, meseestratto
>
>dataattuale=(Recordset1.Fields.Item("DataPresenza").Value)
>
>datasplit=split(dataattuale,"/")
>
>meseestratto= datasplit(1)
>%>
non usando più asp ormai da anni, ti faccio una domanda, come mai usi ancora ado e asp classic? C'è un motivo per cui non sei passato a .net?
Detto questo posso solo dirti logicamente come farei:

- Apro una connessione
- Apro un recordset utilizzando un command, definendone la proprietà CursorLocation a adUseClient e settando subito dopo l'esecuzione del comando la proprietà ActiveConnection a Nothing (per farlo disconnesso).
- Prima del ciclo salvo il valore del primo record su due variabili di tipo intero (vMese e vAnno, che rispettivamente conterranno la month(campo_recordset_data) e la year(campo_recordset_data)
- Prima del ciclo scrivo la stringa del primo mese
- Mi posiziono sul record successivo
- Entro nel ciclo
- Controllo se il month(campo_recordset_data) e lo year(campo_recordset_data) sono cambiati rispetto a quelli salvati prima dell'esecuzione del ciclo
- Se sì, creo la stringa del nuovo mese, in base al valore del mese stesso e mi salvo nelle due variabili il nuovo valore
- Se no, stampo il div coi giorni
- mi sposto in posizione successiva
- ricomincio

prova ad implementare il tutto e vedrai che andrà, sempre che non abbia omesso qualcosa logicamente
--

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