webForumDet fria alternativet

pressentera dagsshema för användare

.NET

9 svar · 379 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

Sitter och funderar på hur jag på bästa sätt ska pressentera olika dagars chema för användaren. I databasen ligger text på varje detalj och tid. För användaren vill jag att en dag ska visas i 30 minuterintervaller och visas även om där inte finns något "inbokat". Användaren bör också kunna lägga till i chemat genom inskrivning. Någon som har tips på bra komponent?

Medlem sedan nov. 2003569 inlägg
#2

ös upp ett datagrid med ett dataset och ett datatable som ser ut såhär:

tid syssla

08:00 gå upp
08:30 ät frikadeller
09:00 gå till jobbet
10:30 sitt av tiden
11:00
12:30 gå hem och slafa på soffan

osv osv, orkar inte riktigt skriva..

16:00 värm lite köttbullar
16:30 ta fram en gaffel
17:00 hugg en köttbulle med gaffeln
17:30 stoppa in gaffeln i truten
18:00 svälj

ja jag tror du förstår Fetto. :)
och om användaren inte vill delta i dessa aktioner så ändrar han bara i datagrid:et och eftersom Winforms dataGrid har något så fint som 2-vägsbindning så kan du spara ner alltihopa så fort han skriver något bara med en enda rad kod i Cell_Changed händelsen nämligen:
DataAdapter.Update(dataSet11.tabellnamnet);
Menne det förutsätter att du använder DataSet:s och DataAdapters ;)

detta tror jag blir den bästa lösningen..

Medlem sedan apr. 2004778 inlägg
#3

McFetto, nu gjorde jag bara en liten snabbsökning men denna kanske kan vara en början
http://www.codeproject.com/aspnet/schedule.asp

Nöff, jag har ju följt dina inlägg ett tag. Skulle vara intressant att se någon av dina applikationer nån gång.

Medlem sedan nov. 20022 355 inlägg
#4

Nöff, datagriden är för enkel att använda ;)
Pdahlen, tar en titt på den länken senare idag, det verkar vara något som jag hade tänkt mig. För tillfället har jag använt mig av en listView som innehåller olika andra controller så som labels textboxar etc. Detta för att kunna editera flera olika kolumner.

Medlem sedan nov. 20022 355 inlägg
#5

Tittade på din länk nu PDahlen och det var ju asp.net :(. Sparar dock den till ett annat tillfälle :)

Medlem sedan apr. 2004778 inlägg
#6

Ja, men jag tänkte att det kanske var något att utgå ifrån.
Gör du en bra design för själva "applikationen" och databasen så spelar det ingen roll om du sen lägger på WebForm eller WinForm som UI. ;)

Men jag kan göra en liten sökning till om du inte hittat något ännu.

Medlem sedan nov. 2003569 inlägg
#7

Nöff, datagriden är för enkel att använda

Nej det är genialt ;)
Med min lösning får du:

1. användarna kan klicka på ett datum i kalendern och få upp den valda dagen i timmes intervaller.
2. användaren ser i datagrid:et vilken syssla som ska göras per timme.
3. användaren kan också ändra och lägga till sysslor genom att helt enkelt skriva i datagridet vad han vill göra den timmen, allt sparas efter att han tryckt return. Detta kallas 2-vägsbindning eftersom använder man dataTables och dataset:s tillsammans med winformsdatagrid så binds dom tillvarandra, vilket betyder att uppdaterar man det ena uppdateras det andra. Detta finns inte ännu i webforms datagrid 1.1 men kommer i ASP.NET2.0

Ladda nu ner min lilla lösning.
http://member.webforum.nu/6495/DataSet1.zip

Databasen ska heta "schemat" och det är SQL-server eller MSDE som gäller.
tabellen heter såhär:

CREATE TABLE tider (
ID int IDENTITY(1,1) UNIQUE NOT NULL,
tid datetime,
syssla varchar(255)
PRIMARY KEY(ID));

Och ni får också ändra connectionsträngen, sök upp
"this.sqlConnection1.ConnectionString" i Form1

		private void monthCalendar1_DateChanged(object sender, System.Windows.Forms.DateRangeEventArgs e)
		{
			try
			{
				dataGrid1.Enabled=true;	
				sqlDataAdapter1.SelectCommand.Parameters["@start"].Value=e.Start;
				sqlDataAdapter1.SelectCommand.Parameters["@end"].Value=e.End.AddDays(1);
				dataSet11.Clear();
				sqlDataAdapter1.Fill(dataSet11.tider);
				if(dataSet11.tider.Rows.Count==0)
				{
						for(int tim=0;tim<24;tim++)
						{
							DataSet1.tiderRow tiderRow=dataSet11.tider.NewtiderRow();
							tiderRow.tid=e.Start.AddHours(tim).AddSeconds(1);
							tiderRow.syssla=" ";
							dataSet11.tider.AddtiderRow(tiderRow);
						}
				}
				dataGrid1.DataSource=null; // ingenting är sparat i databasen ännu, allt är bara temporärt i datatable
				dataGrid1.DataSource=dataSet11.tider;
			
			}
			catch(Exception error)
			{
				label1.Text=error.Message;
			}
		}

och

		private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
		{
			try
			{
				dataSet11.tider.EndInit(); // nu sparar vi ner hela skiten på en gång.
				sqlDataAdapter1.Update(dataSet11.tider);
			}
			catch(Exception error)
			{
				label1.Text=error.Message;
			}
		}

Detta är det enda man behöver skriva för att implementera ett litet enkelt schema, resten gör VS.NET.. Men det förutsätter att man använder typade dataSets ;)

Medlem sedan nov. 2003569 inlägg
#8

För tillfället har jag använt mig av en listView som innehåller olika andra controller så som labels textboxar

Fetto. Får man fråga hur du lyckades få in winformscontrol:er i ListView.Items.Add() metoden?. Eller använder du Controls.Add(). Men om du använde Controls.Add(), hur håller du då reda på vilken itemindex dina grupper av kontroller är på?.

Medlem sedan nov. 20022 355 inlägg
#9

öff. Jaja lite modifierad ListView då ;)
jag har använt mig av denna tutorial: http://www.codeproject.com/cs/miscctrl/ListViewCellEditors.asp

Medlem sedan nov. 20022 355 inlägg
#10

PDahlen skrev:

Ja, men jag tänkte att det kanske var något att utgå ifrån.
Gör du en bra design för själva "applikationen" och databasen så spelar det ingen roll om du sen lägger på WebForm eller WinForm som UI. ;)

Men jag kan göra en liten sökning till om du inte hittat något ännu.

Jo, det jag hittat är jag nöjd med för tillfället.. Får se med tiden! :) Tackar för hjälpen :bire

266 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)