webForumDet fria alternativet

kalender....

10 svar · 342 visningar · startad av icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#1

Jag skulle vilja ha lite ideér hur jag ska lösa detta på bästa sätt.

Jag ska loopa fram alla dagar i en kalender och har en tabell i en databas med datum och event. när jag listar ut alla dagar vill jag även lista ut om jag skrivit något för just den dagen.....ni fattar säkert :)

Jag tänkte att jag skulle köra ner allt i en array och sen kolla om datumet finns i den.

Är det ett bra sätt skulle jag hemskt gärna vilja se ett exempel på hur man fyller en array med data från en tabell, eller om nån har ett bättre sätt :)

mvh icaaq

renholmMedlem sedan apr. 20012 266 inlägg
#2

Är det en "hemmagjord" kalender? eller <asp:calendar> ?

icaaqMedlem sedan okt. 20005 273 inlägg
#3

"hemmagjord" ;)

icaaqMedlem sedan okt. 20005 273 inlägg
#4

Jag listar alla dagar så här nu:

[red]
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)));
	c.ApplyStyle(sDatum);
	c.ColumnSpan = 2;
	r.Cells.Add(c);
	TableCell d = new TableCell();

	tSkala.Rows.Add(r);
	tSkala.ApplyStyle(sBig);
	dteDay = dteDay.AddDays(1);
}[/red]

och jag tycker att det verkar lite overkill att anropa databasen på varje ny rad.....

renholmMedlem sedan apr. 20012 266 inlägg
#5

Hämta från databasen engång och spara det i en DataSet.

icaaqMedlem sedan okt. 20005 273 inlägg
#6

ok...nu har jag sparat ner tabellen t_datum i ett dataset.
Men hur loopar jag igenom det, jag skulle gissa på en do while() slinga men jag vet inte riktigt hur :OO

Schyst om nån skulle vilja dela med sig sina kunskaper :)

mvh icaaq

juventus1Medlem sedan dec. 2000399 inlägg
#7

Sa har kan du skriva loopen iaf.

for (int i = 0; i < ds.Table["t_Datum"].Rows.Count:i++) 
{}

Sedan far du kolla om det finns ett event for dagen och i sa fall skriva ut det.

icaaqMedlem sedan okt. 20005 273 inlägg
#8

Så här loopar jag igenom det nu

[red]
for (int j=0; j<numrows; j++)
			{   
				Boolean blnOK = false;
				int s = 0;
				for(int i=0; i < myDs.Tables["datum"].Rows.Count - 1; i++) 
				{ 
					if(myDs.Tables["datum"].Rows[i]["datum_datum"].Equals(dteDay)) 
					{ 
						blnOK = true;
						s = i;
					}
				}
				if (blnOK == true)
				{
					int intFeel = Convert.ToInt32(myDs.Tables["datum"].Rows[s]["datum_feel"]);
					HtmlImage barImage = new HtmlImage();
					barImage.Src = "/WebApplication1/images/bar.jpg";
					barImage.Width = intFeel;
					barImage.Height = 16;

					Table barTable = new Table();
					TableRow barRow = new TableRow();
					TableCell barCell = new TableCell();
					barCell.Controls.Add(barImage);
					barRow.Cells.Add(barCell);
					barTable.Rows.Add(barRow);
					barTable.CellPadding = 0;
					barTable.CellSpacing = 0;

					TableRow r = new TableRow();                
					TableCell c = new TableCell();
					c.Controls.Add(barTable);
					c.ApplyStyle(sLank);
					r.Cells.Add(c);
					tSkala.Rows.Add(r);
				}
				else
				{					
					TableRow r1 = new TableRow();                
					TableCell c1 = new TableCell();
					c1.Controls.Add(new LiteralControl("&nbsp;"));
					c1.ApplyStyle(sLank);
					r1.Cells.Add(c1);
					tSkala.Rows.Add(r1);
				}			
				
				dteDay = dteDay.AddDays(1);
				tSkala.ApplyStyle(sBig);
			}
}[/red]
juventus1Medlem sedan dec. 2000399 inlägg
#9

Är det något fel på den koden?

GrynetMedlem sedan maj 2001329 inlägg
#10

Tjipp, råkade ha tråkigt så jag pulade om din kod lite så att den enligt mitt tycke blev mer logisk

for (int j=0; j<numrows; j++){   
	TableRow row = new TableRow();                
	TableCell cell = new TableCell();
	Control control = new LiteralControl(" ");	//låt detta vara behållaren för kontrollen vi ska lägga till
	
	for(int i=0; i < myDs.Tables["datum"].Rows.Count - 1; i++) { 
		if(myDs.Tables["datum"].Rows[i]["datum_datum"].Equals(dteDay)) { 
			HtmlImage barImage = new HtmlImage();
			barImage.Src = "/WebApplication1/images/bar.jpg";
			barImage.Width = Convert.ToInt32(myDs.Tables["datum"].Rows[i]["datum_feel"]);
			barImage.Height = 16;

			Table barTable = new Table();
			TableRow barRow = new TableRow();
			TableCell barCell = new TableCell();
			barCell.Controls.Add(barImage);
			barRow.Cells.Add(barCell);
			barTable.Rows.Add(barRow);
			barTable.CellPadding = 0;
			barTable.CellSpacing = 0;

			control = barTable; //ändra innehållet i contriol till vår table
			break; //vi har funnit den och kan sluta loopa
		}
	}

	cell.Controls.Add(control);  //addera kontrollen till huvud tabellen

	cell.ApplyStyle(sLank);
	row.Cells.Add(cell);
	tSkala.Rows.Add(row);			

	dteDay = dteDay.AddDays(1);
	tSkala.ApplyStyle(sBig);
}

Var lite för skojs skull bara :)

En sak till det känns som dina två loopar är lite onödiga, jag vet inte hur resten av din kod ser ut men det känns som om du ska bara behöva en for loop. Där du loopar igenom alla fält i din databas tabell och kopplar dessa till rätt kolumn i din huvud tabell (utseendet). Denna antar jag har en nyckel som är ett datum (eller ett datum minus ett annat..dvs 0 och uppåt till numrows). Så i din loop kollar du om datumet i tabellen minus ditt grunddatum hamnar inom talen för din utseende tabellen och så sätter du fint in värderna där.

Kanske lite snurrigt förklarat men vad räknar ni med 24.00 en fredag ;)

icaaqMedlem sedan okt. 20005 273 inlägg
#11

juventus1 skrev:

Är det något fel på den koden?

Nej den funkar nu :)

Grynet:
Tack för att du tog dig tid att göra koden lite mer logisk! :)
Jag är som sagt bara i början av min OOP karriär så att jag tänker säkert inte jättelogiskt ;)

Nu är det stora problemet hur jag ska utforma databasen ( http://www.webforum.nu/showthread.php?s=&threadid=53387 )

Efter att jag fixat det blir det att göra koden mer logisk :)

mvh icaaq

125 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)