---
title: "Dynamisk tabell"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/53895-dynamisk-tabell"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "icaaq"
published: "2002-09-22T05:29:20.000Z"
updated: "2002-09-23T22:27:46.000Z"
replies: 16
views: 519
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/53895-dynamisk-tabell"
---

# Dynamisk tabell

## #1 — icaaq, 2002-09-22T05:29Z

ok, efter att jag byggt upp en tabell med Response.Write ;) [HÄR](http://www.webforum.nu/showthread.php?s=&threadid=52767) Så har jag gett mig på dynamiskt uppbyggda tabeller :)

Men hur gör man ifall man vill ha en \<tr\> med colspan="2" och sen resten av \<tr\> utan.

Man bör väl kunna använda en "template" men jag vet inte riktigt hur man gör.

Hoppas ni kan hjälpa mig in på rätt spår :)

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

## #2 — Han-Solo, 2002-09-22T07:43Z

Har inte tillgång till mina filer just nu... men jag antar att du är ute efter nått liknande jag gjorde i veckan...

1\. Använd dig av \<asp:Table\> i aspx sidan... ja du kan använda asp:TableRow och asp:TableCell oxå för att tjorvatill cellerna som du vill ha dem.

2\. Nu kan du (ifall du minst har \<asp:Table\>) kommaåt tabellen från code behind sidorna... 

```
new TableRow()
new TableCell()
```

osv...

på så vis kan man möblera till tabeller efter tycke och smak... DYNAMISKT!!!

/Var det svar nog?

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

## #3 — icaaq, 2002-09-22T08:10Z

hmmm....

Jag tänkte mer att jag skulle använda header, item och Footer template.....

och sedan kanske fa sa att headertemplaten bara har en cell, sedan lista alla manadens dagar i itemtemplaten och sedan en snygg avslutning med footer.

ps mitt tangentbord fick spel sa jag kan inte skriva ordentligt ds

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

## #4 — renholm, 2002-09-22T13:26Z

Du kan definera colspan i style="". Lägg bara till style="padding-left: 10px; padding-right: 10px; padding-top: 5px; padding-bottom: 5px".

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

## #5 — icaaq, 2002-09-22T15:57Z

Jag vet inte om jag är ute och cyklar men när jag försöker att göra så här får jag inte upp några "padding" alternativ :l

```
[red]
Style s = new Style();
s.
[/red]
```

hur menar du att jag ska göra :q

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

## #6 — icaaq, 2002-09-22T16:14Z

Jag fixade det.... :e

```
[red]int numrows;
			int numcells = 2;
			CultureInfo cultSwe = new CultureInfo("sv-SE");
			DateTime dtedate = DateTime.Now;
			numrows = DateTime.DaysInMonth(dtedate.Year, dtedate.Month);
			DateTime dteDay = new DateTime(dtedate.Year, dtedate.Month, 1);
			//Style s = new Style();
			//s.
			TableRow row1 = new TableRow();
            TableCell cell1 = new TableCell();
			cell1.Controls.Add(new LiteralControl(dteDay.Date.ToString("y", cultSwe)));
			[b]cell1.ColumnSpan = 2;[/b]
			row1.Cells.Add(cell1);
			Table2.Rows.Add(row1);

			for (int j=0; j<numrows; j++)
			{            
				TableRow r = new TableRow();
                
					TableCell c = new TableCell();
					c.Controls.Add(new LiteralControl(dteDay.Date.ToString("dd", cultSwe)));	
					r.Cells.Add(c);
					TableCell d = new TableCell();
					d.Controls.Add(new LiteralControl(dteDay.Date.ToString("dddd", cultSwe)));	
					r.Cells.Add(d);

				
				Table2.Rows.Add(r);
				dteDay = dteDay.AddDays(1);
			}
[/red]
```

Nu kan jag köra vidare lite till :)

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

## #7 — icaaq, 2002-09-22T17:03Z

styles

Tjenare igen..... hehe
nu har jag denna:

```
[red]
Style sDatum = new Style();
			[b]sDatum.Width = 10;[/b]
			sDatum.Font.Name = "Verdana";
			sDatum.Font.Size = 10;[/red]
```

men hur skriver jag in att jag vill ha 10% ?

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

## #8 — icaaq, 2002-09-22T17:15Z

Jag fixade även det.

```
[red]
Style sDatum = new Style();
			sDatum.Width = Unit.Percentage(10);
			sDatum.Font.Name = "Verdana";
			sDatum.Font.Size = 10;[/red]
```

 :)

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

## #9 — Pace, 2002-09-22T17:26Z

Du fixar det mesta icaaq. :e

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

## #10 — icaaq, 2002-09-22T20:34Z

Tillbax :e

Jag har denna

```
[red]
TableRow row1 = new TableRow();
			TableCell cell1 = new TableCell();
			TableCell cell2 = new TableCell();
 			cell1.Controls.Add(new LiteralControl(dteDay.Date.ToString("y", cultSwe)));
			cell1.ApplyStyle(sManad);
			row1.Cells.Add(cell1);
			cell2.Controls.Add(new ??? [b]Här vill jag köra doLinks(dtedate)[/b]
			cell2.HorizontalAlign = HorizontalAlign.Right;
			Table2.Rows.Add(row1);[/red]
```

Hur ska jag skriva för att kunna köra en funktion i dynamisk cell?

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

## #11 — icaaq, 2002-09-23T07:10Z

Tjenare igen alla .Net:are!!

Nu har jag kommit så här långt

```
[red]
		private void Page_Load(object sender, System.EventArgs e)
		{
			// Deklarerar lite variabler
			int numrows;
			string path = Request.FilePath;
			CultureInfo cultSwe = new CultureInfo("sv-SE");
			
			// Kollar lite datum
			DateTime dtedate = DateTime.Now.Date;
			if (Request.QueryString["dteDate"] != null)
			{
				dtedate = Convert.ToDateTime(Request.QueryString["dteDate"]);
			}
			numrows = DateTime.DaysInMonth(dtedate.Year, dtedate.Month);
			DateTime dteDay = new DateTime(dtedate.Year, dtedate.Month, 1);

			// Skapar en style för datumet
			Style sDatum = new Style();
			sDatum.Width = Unit.Percentage(10);
			sDatum.Font.Name = "Verdana";
			sDatum.Font.Size = FontUnit.XSmall;
			sDatum.BorderWidth = Unit.Pixel(1);
			sDatum.BorderColor = Color.Coral;
			sDatum.BorderStyle = BorderStyle.Dotted;
			
			// Skapar en style för år och månad
			Style sArManad = new Style();
			sArManad.Width = Unit.Percentage(10);
			sArManad.Font.Name = "Verdana";
			sArManad.Font.Size = FontUnit.XSmall;
			sArManad.BorderWidth = Unit.Pixel(1);
			sArManad.BorderColor = Color.Coral;
			sArManad.BorderStyle = BorderStyle.Dotted;

			// Skapar en style för Länkarna
			Style sLank = new Style();
			sLank.Width = Unit.Percentage(90);
			sLank.Font.Name = "Verdana";
			sLank.Font.Size = FontUnit.XSmall;
			sLank.BorderWidth = Unit.Pixel(1);
			sLank.BorderColor = Color.Coral;
			sLank.BorderStyle = BorderStyle.Dotted;

			// Skapar en style för veckodagarna
			Style sVeckoDagar = new Style();
			sVeckoDagar.Width = Unit.Percentage(90);
			sVeckoDagar.Font.Name = "Verdana";
			sVeckoDagar.Font.Size = FontUnit.XSmall;
			sVeckoDagar.BorderWidth = Unit.Pixel(1);
			sVeckoDagar.BorderColor = Color.Coral;
			sVeckoDagar.BorderStyle = BorderStyle.Dotted;

			// Skapar en style för månaden
			Style sManad = new Style();
			sManad.Font.Name = "Verdana";
			sManad.Font.Size = FontUnit.XSmall;
			sManad.BorderWidth = Unit.Pixel(1);
			sManad.BorderColor = Color.Coral;
			sManad.BorderStyle = BorderStyle.Dotted;

			// Skapar en style för söndagar
			Style sSondag = new Style();
			sSondag.Font.Name = "Verdana";
			sSondag.Font.Size = FontUnit.XSmall;
			sSondag.BorderWidth = Unit.Pixel(1);
			sSondag.BorderColor = Color.Coral;
			sSondag.BorderStyle = BorderStyle.Dotted;
			sSondag.BackColor= Color.PeachPuff;
			
			/* Börjar bygga tabellen genom att visa månad och sedan länkarna till
			 angränsande månader*/  
			TableRow row1 = new TableRow();
			TableCell cell1 = new TableCell();
			cell1.Controls.Add(new LiteralControl(doLinks(dtedate, path)));
			cell1.ColumnSpan = 2;
			cell1.HorizontalAlign = HorizontalAlign.Center;
			cell1.ApplyStyle(sLank);
			row1.Cells.Add(cell1);
			Table2.Rows.Add(row1);
			
			// Lägger till dagarna i månaden
			for (int j=0; j<numrows; j++)
			{            
				TableRow r = new TableRow();
                
				TableCell c = new TableCell();
				c.Controls.Add(new LiteralControl(dteDay.Date.ToString("dd", cultSwe)));
				if (dteDay.Date == DateTime.Now.Date)
				{
				c.Controls.Add(new LiteralControl("&laquo;"));
				}
				if (dteDay.DayOfWeek == 0)
				{
					c.ApplyStyle(sSondag);
				}
				else
				{
					c.ApplyStyle(sDatum);
				}
				
				r.Cells.Add(c);
				TableCell d = new TableCell();
				d.Controls.Add(new LiteralControl(dteDay.Date.ToString("dddd", cultSwe)));	
				if (dteDay.DayOfWeek == 0)
				{
					d.ApplyStyle(sSondag);
				}
				else
				{
					d.ApplyStyle(sVeckoDagar);
				}
				r.Cells.Add(d);

			
				Table2.Rows.Add(r);
				dteDay = dteDay.AddDays(1);
			}

		}
		static string doLinks(DateTime dteDate, string Path)
		// Denna funktion fixar till länkarna till angränsande månader
		{
			CultureInfo cultSwe = new CultureInfo("sv-SE");
			return "<a href=\""+Path+"?dteDate="+dteDate.AddMonths(-1)+ "\" title=\""+dteDate.Date.AddMonths(-1).ToString("y", cultSwe)+ "\">&laquo;</a> "+ dteDate.Date.ToString("y", cultSwe)+" <a href=\""+Path+"?dteDate="+dteDate.AddMonths(1)+ "\" title=\""+dteDate.Date.AddMonths(1).ToString("y", cultSwe)+"\">&raquo;</a>";
		}[/red]
```

Men jag har lite funderingar:

1. Hur gör jag om jag vill göra en tabell till i en dynaimskt uppbyggd cell?
2. Om ni tittar på koden ovanför vad kan jag göra för att optimera den?
3. Tycker ni att jag är jobbig ;) ?

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

## #12 — NETwork, 2002-09-23T08:25Z

Rent spontant så skulle jag nog ha mina css-klasser i ett vanligt css-dokument istället om du inte uutyckligen behöver sätta dem dynamiskt. Dels blir det en massa kod, dels kan måste du kompilera sidan om du vill ändra i dem.

I din sista funktion dolinks säger jag samma sak som tidigare; undvik att returnera htmlkod, inte för prestandans skull men för översiktligheten och dynamiken. Rätt var det är så vill man komma åt den där länken (kanske inte händer i detta fallet men ändå) och då är det en bra vana att alltid använda asp.net-kontroller. Returnera en \<asp:hyperlink\> istället.

Jag vågar inte på rak arm svara på hur du gör en tabell i en dynamisk tabell från koden, någon annan kanske vet. Annars får vi hjälpas åt att lösa det senare om du inte fixar det själv. :)

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

## #13 — icaaq, 2002-09-23T10:59Z

YEEAAA!!

Jag fick det att funka ..... :e
Det var bara att göra en annan tabell först och sedan sätta in den, så här

```
[red]
Table Table3 = new Table();

TableRow row2 = new TableRow();
			TableCell cell3 = new TableCell();
			cell3.Controls.Add(new LiteralControl(doLinks(dtedate, path)));
			cell3.ColumnSpan = 2;
			cell3.HorizontalAlign = HorizontalAlign.Center;
			cell3.ApplyStyle(sLank);
			row2.Cells.Add(cell3);
			Table3.Rows.Add(row2);
			TableRow row1 = new TableRow();
			TableCell cell1 = new TableCell();
			cell1.Controls.Add([b]Table3[/b]);
			cell1.ColumnSpan = 2;
			cell1.HorizontalAlign = HorizontalAlign.Center;
			cell1.ApplyStyle(sLank);
			row1.Cells.Add(cell1);
			Table2.Rows.Add(row1);[/red]
```

Nu kan jag köra vidare........brooom

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

## #14 — icaaq, 2002-09-23T20:58Z

Formtaggen :OO

Jag håller nu på med ett formulär men jag får inte in en listbox där jag vill ha den ........alltså mellan \<form\> \</form\> om jag visar lite kod kanske ni förstår bättre:

Här gör jag en listbox.

```
[red]
ListItem lSkala = new ListItem("0", "0");
ListBox lBox = new ListBox();
	for (int i=0; i == 100; i++ )
	{
		lBox.Items.Add(new ListItem(i.ToString(), i.ToString()));
	}
lBox.Attributes.Add("runat", "server");[/red]
```

Och sedan gör jag en HtmlForm

```
[red]
HtmlForm lForm = new HtmlForm();
lForm.Enctype = "text/plain";
lForm.Method = "post";
lForm.Attributes.Add("runat", "server");
[/red]
```

Sen när jag ska stoppa in den i tabellen gör jag följande

```
[red]
TableRow row2 = new TableRow();
TableCell cell2 = new TableCell();
TableCell cell3 = new TableCell();
cell2.Controls.Add(new LiteralControl("Skala 0 till 100%"));
cell2.ApplyStyle(sLank);
cell2.HorizontalAlign = HorizontalAlign.Left;
row2.Cells.Add(cell2);
cell3.Controls.Add(lForm);
cell3.Controls.Add(lBox);
cell3.ApplyStyle(sLank);
cell3.HorizontalAlign = HorizontalAlign.Left;
row2.Cells.Add(cell3);

tInsert.Rows.Add(row1);
tInsert.Rows.Add(row2);[/red]
```

Hur ska jag göra föra att form taggen inte ska stängas på en gång :q

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

## #15 — renholm, 2002-09-23T21:27Z

Eftersom du endast kan ha en server kontrollerad \<form\> så måste en och samma \<form\> omsluta hela sidan. 

```
<body>
<form runat="server">
<!-- Sidan -->
</form>
</body>
```

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

## #16 — icaaq, 2002-09-23T22:08Z

nja...jag löste det som så att jag la dit den i HtmlForm:en så här

```
[red]lForm.Controls.Add(lSkala);[/red]
```

Men jag kan på nått sätt inte infoga datan som jag har i listboxen till DropDownListen.....

Nån som har nån idé?

PS nu går jag och lägger mig.....

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

## #17 — icaaq, 2002-09-23T22:27Z

Jag fixade även det :e

Jag hade glömt dataBindingen... :r

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/53895-dynamisk-tabell
