webForumDet fria alternativet

Vertikalt i kalender?

.NET

7 svar · 434 visningar · startad av Kuckel

Medlem sedan jan. 2002104 inlägg
Frågan#1

Går det att lista datum vertikalt i en kalender?

Medlem sedan jan. 20022 440 inlägg
#2

Förstår inte riktigt vad du menar. Vill du att text och siffror ska skrivas vertikalt?

Medlem sedan jan. 2002104 inlägg
#3

Japp, varje dag ska visas på en EGEN rad där viss text/länkar läses in från databasen på specifika dagar

Medlem sedan juni 20014 290 inlägg
#4

Det är väl bara att "loopa" ut dagarna i en tabell (en dag per rad) och för varje dag/rad visar man vad som finns i databasen för den dagen.

Medlem sedan okt. 20041 556 inlägg
Medlem sedan jan. 2002104 inlägg
#6

Hmm, typ så ... men den ska lista alla dagar utan klockslag även om det inte finns nåt i databasen så ska den lsita ut rätt dagar på aktuell månad, vertikalt.

Men egentligen skulle det gå likabra med en datagrid som loopar ut varje dag på aktuell månad .... så kanske man kan gå till databasen på ItemCreated eller liknande och kolla om det datumet finns ??? ... men gridden måste loopa rätt antal dagar den månaden osv ... någon som vet hur man kan gå tillväga?

Läste nåt om DateTime Class?

Medlem sedan jan. 2002104 inlägg
#7

Löste det ....

la ut en kalender och gjorde den helt vit. Skapade sen en DataTable och I kalenderns DayRender la jag till en ny rad i detta datatable med datum.

Kopplade sen datatablen till en Datalist.

Medlem sedan maj 20012 812 inlägg
#8

uuhyiuu...

Det lät väldigt omständigt. För det första så behöver du inte lägga till en calender och göra den vit för att använd den. Du kan skapa din calender i din codebehind fil och använda den utan att den finns med på din aspx sida (om du nu vill fortsätta att använda calendern)

Sen om du vill ha reda på hur många dagar som finns i en månad så finns följande metod: new System.Globalization.GregorianCalendar().GetDaysInMonth() som ger dig antalet dagar i en månad.

Så min lösning hade blivit:

1. att skapa en array eller en lista med utifrån ovanstående metod, bind denna array eller lista till en repeater.

int[] daysInMonth = new int[new System.Globalization.GregorianCalendar().GetDaysInMonth(DateTime.Now.Year, DateTime.Now.Month);

2. hämta ut alla poster i databasen och lägg i en hashtable där key=datum där datumet är BETWEEN (month.start) and (month.End). På det visset så har du nu en lista med alla poster som du enkelt kan få fram.
3. i repeaterns ItemDataBound så kontrollerar du vilket datum det är (reperaterItemEventArgs.Item.DataItem) och hämtar sedan ut rätt post ur hashtablen med det datumet.

Nu kommer du får en vertikal lista med rutor för alla månadensdagar samt att du får med poster på de dagar som berörs, men endast ett SQL uppslag (prestanda).

Så nu till det tråkiga, denna lösning ger dig lite problem om du råkar ha 2 poster på samma dag, eftersom hashtablen så fall kommer säga ett det redan finns en sådan post i hashtablen med den 'key:n'. Lösningen blir att istället för att ha en post direkt i hashtablen så lägger du in en lista av poster i hashtablen för den dagen...

Hur enkelt som helst :)

- M

268 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)