I detta tips tänkte jag visa hur du enkelt skapar länkar i din Calendar-kontroll. Detta kan vara användbart vid t.ex. bloggar eller andra tillfällen då du vill visa att det finns något speciellt vid ett visst datum. Det första vi ska göra är att skapa oss en ny "web site". Dra sedan ut en Calendar-kontroll på sidan. I denna kontroll sätter du sedan OnDayRender-eventet till DayRender.
<asp:Calendar ID="calBlogg" runat="server" OnDayRender="DayRender"></asp:Calendar>
Nästa steg är att skriva koden för själva eventet OnDayRender, så vi hoppar genast vidare till Code-läget där vi använder följande kod för att skapa en länk på datumet som kommer fem dagar fram i tiden.
protected void DayRender(object sender, DayRenderEventArgs e)
{
// Detta är bara ett exempel, egentligen bör det kontrolleras mot databas eller något
// liknande om det används i en blogg eller något.
HyperLink hl;
// Vi börjar med att hämta det datum som renders just nu med e.Day.Date.ToShortDateString(),
// detta ger oss ett datum på formen yyyy-MM-dd, i varje fall om vi är i Sverige.
// Detta kan du använda för att göra en sökning mot din databas eller vad du nu har för
// datakälla för att se om det finns något på detta datum. I detta exempel kollar vi bara
// om det är samma som datumet som är fem dagar fram i tiden från idag.
if(e.Day.Date.ToShortDateString().Equals(DateTime.Today.AddDays(5).ToShortDateString()))
{
hl = new HyperLink();
// När vi har fått en träff så sätter vi vilken URL som vi ska skickas till när vi
// klickar på detta datum.
hl.NavigateUrl = "http://www.aspsidan.se";
// Inte helt oväntat sätter vi dagens siffra som text till våran hyperlink-kontroll.
hl.Text = e.Day.DayNumberText;
// Vi tar bort kontrollen som redan finns där
e.Cell.Controls.RemoveAt(0);
// Och istället lägger vi dit vår egen hyperlink-kontroll
e.Cell.Controls.Add(hl);
// Sedan lägger vi på lite bakgrundsfärg så att det syns att det är något
//speciellt denna dag.
e.Cell.BackColor = System.Drawing.Color.PowderBlue;
}
}
Som alltid kan du se ett live-demo eller ladda ner scriptet för en närmre kik.
Demo: http://aspdotnet.nu/upload/demo/Calendar/
Script: http://aspdotnet.nu/upload/script/calendar.rar
Det var allt för denna gång. På återseende.