Avatar billede dcasso Nybegynder
18. september 2004 - 14:21 Der er 10 kommentarer og
1 løsning

Datagrid - indsætte og aflæse data

Hejsa

Mit spørgsmål lyder meget enkelt. Hvordan kan jeg indsætte en række i et datagrid, altså med andre ord bibeholde de rækker der er og tilføje en ny. Dernæst, hvordan kan jeg på et givet tidspunkt aflæse de indsatte rækker.

Skal jeg bruge en bagvedliggende data struktur... Vil gerne undgå at skulle lave midlertidige lagringer i en database.

mvh
Dennis
Avatar billede snepnet Nybegynder
18. september 2004 - 14:25 #1
hvis du alligevel binder til en datakilde, er det vanligvis nemmest blot at tilføje rækken i datagrundlaget, og derefter databinde.

hvis du skal læse rækkerne, kan du gøre det direkte gennem datagriddet objektmodel :

foreach(DataGridItem dgi in this.SomeDataGrid)
{
  string text = dgi.Cells[0].Text;
}
Avatar billede snepnet Nybegynder
18. september 2004 - 14:28 #2
Det vil vanligvis nok ikke være særlig interessant at hente værdier som du selv har smidt ind i griddet ved normal databinding, men hvis der er data som brugeren har redigeret i, ville det være relevant at hente dem.

hvis der er redigeret vha. en textbox :

foreach(DataGridItem dgi in this.SomeDataGrid)
{
  string text = ((TextBox)dgi.Cells[0].Controls[1]).Text;
}
Avatar billede dcasso Nybegynder
18. september 2004 - 14:31 #3
Det er en faktura formular, hvor brugeren vælger et produkt, stk, pris og rabat og indsætter kolonnen i datagriddet. Dette sker ml. 1-6 gange. Det kan være der er behov for at ændre i en tidligere række eller slette denne. Til sidst skal de kunne trykke på print, og fakturaen udskrives.

Jeg vil bare gerne undgå at lagre det i en database før alle data er korrekte. Mit problem er, hvor skal jeg lagre disse data midlertidigt. For har jeg dem først lagret et sted, er det jo intet problem at hente eller ændre.
Avatar billede snepnet Nybegynder
18. september 2004 - 14:41 #4
hov - jeg fik lige gæster, så der går nok lige en halv time.
(du kan gemme data flere steder - Session vil nok være det mest relevante i denne forbindelse).

du kan lave en snild "Sessionvariabel" sådan her :

protected DataSet SessionDataSet
{
  get{return (object)Session["data"] != null ? (DataSet)Session["data"] : null;}
}

null er så det der bliver returneret hvis der ikke er noget... men du kunne jo have en defaultværdi istedet - måske mere relevant med andre typer som :

protected DateTime SomeDateTime
{
  get{return (object)Session["datetime"] != null ? (DateTime)Session["datetime"] : DateTime.Now;}
}
Avatar billede snepnet Nybegynder
18. september 2004 - 14:41 #5
jeg vender tilbage om en halv til en hel time.
mvh
Avatar billede dcasso Nybegynder
18. september 2004 - 14:46 #6
Ok :) Så smutter jeg lige ned og træner. Kroppen skriger på at komme væk fra tastaturet.

Men kan jeg så gemme hele objekter, såsom en arraylist, der pointer til en række objekter?

For skal gemme 5 værdier pr. produkt, dvs. max 30 værdier. Og vil helst lagre dem så forståeligt som muligt, da jeg ikke bliver ham der skal vedligeholde systemet.
Avatar billede snepnet Nybegynder
18. september 2004 - 14:49 #7
du kan gemme hvilket som helst objekt i session... ingen ballade der.
man skal så bare lige have i mente, at datamængden vil blive ganget op med antallet af brugere...
Avatar billede dcasso Nybegynder
18. september 2004 - 14:51 #8
Selvf., var bare ikke klar over, at muligheden eksisterede til at gemme andet end simple datatyper i en session. Og med et max på 10 brugere, så tror jeg nok det går :)

Hvad vil en alternativ måde være, hvis jeg nu stod overfor et meget større brugerantal.  For cookies virker ik så fikst igen.
Avatar billede snepnet Nybegynder
18. september 2004 - 14:59 #9
En alternativ måde er at gemme tingene i viewstate, men det går langsomt, og kræver at værdierne kan serialiseres.
du kommer derfor hurtig ud i, at skulle implementere siralisering af dine egne typer, og du kommer til at smide en hel del mere html ud til klienten.
det er meget normalt at gemme "opslagsdata" i Cache eller Application-objektet, og så sørge for at gemme specifikke brugerdata (som man så forsøger at holde på et rimeligt nineau) i Session.

du har også muligheden for at benytte en stateserver.... en sql-database hvor sessiondata gemmes istedet for i memmory.
(en stateserver er utrolig nem at sætte op - man skal stort set ikke foretage sig noget selv :o)
Avatar billede snepnet Nybegynder
01. oktober 2004 - 20:27 #10
hvordan ser det ud her dcasso ?
mvh
Avatar billede snepnet Nybegynder
09. oktober 2004 - 15:45 #11
halløj igen dcasse :o)
et svar her også, hvis du kunne bruge det - sig til hvis der er mere.
hold dig munter.
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester