Förstår inte riktigt vad du menar. Vill du att text och siffror ska skrivas vertikalt?
Går det att lista datum vertikalt i en kalender?
7 svar · 434 visningar · startad av Kuckel
Går det att lista datum vertikalt i en kalender?
Förstår inte riktigt vad du menar. Vill du att text och siffror ska skrivas vertikalt?
Japp, varje dag ska visas på en EGEN rad där viss text/länkar läses in från databasen på specifika dagar
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.
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?
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.
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