---
title: "Ändra utseende på cell i kalender om den innehåller text?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/98863-ändra-utseende-på-cell-i-kalender-om-den-innehåller-text"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "CokeLight"
published: "2004-03-06T18:46:05.000Z"
updated: "2004-03-06T23:22:44.000Z"
replies: 3
views: 303
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/98863-ändra-utseende-på-cell-i-kalender-om-den-innehåller-text"
---

# Ändra utseende på cell i kalender om den innehåller text?

## #1 — CokeLight, 2004-03-06T18:46Z

Jag har en 

```
public void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
	CalendarDay d = ((DayRenderEventArgs)e).Day;
	TableCell c = ((DayRenderEventArgs)e).Cell;
	...
```

metod och i den har jag satt ut (tills vidare) statiska LiteralControl med text i kalendern.. dessa representerar att någon har bokat något den dagen.. hur gör jag för att ändra bakgrundsfärgen på den cell som har text i sig...? Samt att jag gör den isSelectable = false så att man inte kan klicka den för att boka just den dagen?

alltså något i stil med...

```
if(cell har en LiteralControl eller text i sig)
{
   c.BackColor = System.Drawing.Color.Aqua; //gör just bara den cellen till blå
   d.IsSelectable = false; //gör just den dagen till icke klickbar
}
```

Permalänk: https://www.webforum.nu/p/98863

## #2 — Dino, 2004-03-06T19:56Z

```
private void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
   if(dagen_har_data)
   {
      e.Cell.Controls.Clear();
      e.Cell.Controls.Add(new LiteralControl(e.Day.DayNumberText));
      e.Cell.BackColor = Color.Aqua;
   }
}
```

 

```
...
//Totalt meningslös kod.
CalendarDay d = ((DayRenderEventArgs)e).Day;
TableCell c = ((DayRenderEventArgs)e).Cell;
...
```

Permalänk: https://www.webforum.nu/p/1293439

## #3 — CokeLight, 2004-03-06T22:45Z

hej, såg precis ditt svar..  tack så mycket.. det är  if(dagen_har_data)
alltså det som ska stå som if villkor som jag inte vet hur jag ska skriva.. Jag postar hur jag använt c och d nedan (en del är hårdkodat just nu):

```
public void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
	CalendarDay d = ((DayRenderEventArgs)e).Day;
	TableCell c = ((DayRenderEventArgs)e).Cell;

			
	arrBookedDays = new String[13][];
	for(int i = 0; i<13; i++)
		arrBookedDays[i] = new String[32];

	arrBookedDays[3][12] = "<a href='#'>Seminarium på Gr...</a>";
	arrBookedDays[3][29] = "<a href='#'>17:00 Träffa H...</a>";

	try
	{
		string bookedDays = arrBookedDays[d.Date.Month][d.Date.Day];

		if(bookedDays != "")
		{
			c.Controls.Add(new LiteralControl("<br>" + bookedDays));
			/*
			e.Cell.Controls.Clear();
			e.Cell.Controls.Add(new LiteralControl(e.Day.DayNumberText));
			e.Cell.BackColor = Color.Aqua;
			*/
		}
	}
		
	catch(Exception bookEx)
	{
		this.lblConfirmDate.Text = "Error: "  + bookEx.ToString();
	}
}
```

 

så nu står det t.ex. arrBookedDays\[3\]\[12\] och då kommer 12 mars att ha texten "Seminarium på Gr..." och arrBookedDays\[3\]\[29\] och då kommer 29 mars att ha "Träffa H..." Så just nu är villkoret if(bookedDays !=  ""). 

Det jag vill är att bara mars 12 och mars 29 ska få aqua (eller nån snyggare färg kanske :) ) och inte bli klickbara. Om jag lägger in din kod i den if satsen såsom den är skriven nu så blir alla celler i hela kalenderna aqua och alla celler blir ej klickbara. Men det kanske beror på hur if() är definierat?

Om det finns nåt mycket bättre sätt så använder jag gärna det då, utan c och d som jag har nu.. bara resultatet blir detsamma :)

Permalänk: https://www.webforum.nu/p/1293507

## #4 — CokeLight, 2004-03-06T23:22Z

läste på MSDN lite granna.. och förstod lite hur man kunde göra if satsen.. om man hårdkodar datum så såg jag att det funkar utmärkt som du sa.. t.ex.

```
if(e.Day.Date == new DateTime(2004, 3, 12))
{
	e.Cell.Controls.Clear();
	e.Cell.Controls.Add(new LiteralControl("12<br>" + bookedDays));
	e.Cell.BackColor = Color.Aqua;
}
```

det gick även bra att göra en if sats som kontrollerade hela arrayen.. o sen sätta e.Day.IsSelectable = false; o sen else true för resten..  :)

Permalänk: https://www.webforum.nu/p/1293514

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/98863-ändra-utseende-på-cell-i-kalender-om-den-innehåller-text
