06. oktober 2004 - 23:52Der er
21 kommentarer og 1 løsning
Ret i en column i en DataSet object
Hej Jeg henter noget data fra min MS SQL server, i en DataSet. Alle data er klar til at fremvise til brugeren borset fra dato column, der er i SqlDateTime format og derfor vises med klokkeslet. Hvordan kan jeg nemmest ret i min dato column i DataSet'et, inden jeg fremviser resultatet til brugeren. Jeg kan sagtens konverter dato formatet, men hvordan retter jeg det til i min dataset objekt. På forhånd tak.
hmmm... hvis det kun er i forbindelse med præsentationen du ønsker at data skal fremstå på en anden måde, virker det lidt dramatisk at du vil ændre dit datagrundlag.
hvordan viser du resultatet til brugeren ?
er det et datagrid du bruger, eller en ander serverkontrol ?
så kan du bare angive et formateringsudtryk direkte på kolonnen... har du angivet dit datagrid i aspx-koden (altså <asp:DataGrid osv...) eller indsætter du det programmatisk ? hvis du lige svare skriver jeg tilbage hvordan du skal gøre.
Nedenstående er et datagrid med én bunden kolonne, hvor indholdet af feltet FldDateTime vises. DataFormatString="{0:yyyy-MM-dd}" sørger for at den første værdi (som så er din dato) formateres på formen yyyy-MM-dd, hvilket medfører en dataangivelse som 2004-12-24
ah.... jeg mente bare at det ville være fint hvis du skrev hvordan du ønskede det vist... altså skrev det herude :o) (så med "tilbage"... men jeg bare tilbage til mig) mvh
hvis du vil styre kolonnerne i aspx-en skal du sætte autogeneratecolumns til false på dit datagrid. (når den er true får du bare smidt det hele ind automatisk, og dem du måtte have bedt om selv - f.eks. på den måde jeg skrev - bliver proppet ind oveni).
hvis du vil undgå at angive alle dine bundne kolonner i aspx-en kan du f.eks. lave din formattering en ItemDataBound-eventhandler... Har du prøvet at abbonnere på den før ?
hvis du i designeren klikker på dit datagrid skulle du gerne få et propertysheet frem. (det er vist fremme som standard, men hvis du har skjult det af den ene eller anden årsag højreklikker du bare på griddet og vælger properties). øverst i propertysheeted er der nogle små ikoner, hvor det ene ligner et lyn. hvis du klikker på det - skiftes de properties der står i propertysheeted ud med de events du kan abbonnere på. Der er et af dem (det ligger i kategorien behavior) der hedder ItemDataBound.
hvis du dobbeltklikker på det (i det felt hvor teksten står), får du oprettet en handler af det event i din kode.
handleren vil (afhængig af navnet på dit datagrid) se ud som følger :
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { // her kan du så skrive kode. }
hvis du vil opnå formatteringen på din data kan du fylde metoden ud med noget i stil med nedenstående :
Koden tager værdien der står i den første celle. konvertere den til en dato, og laver en ToString() på den med angivelse af at der ønskes et bestemt format.
du skal så bare skifte Cells[0] ud med Cells[det index din dato står på]
det betyder bare at alle "normale" item vil blive behandlet. der er flere typer :
Item // 1/3/5/ osv "datarække" AlternatingItem 2/4/6/ osv "datarække" Footer // tjah... footeren :o) Header // headeren EditItem // et item der er sat i editmode (renderer tekstbokse) Pager // man kan få sådan en pagefidus sat ind, så man kan "bladre" i griddet, og det er den det drejer sig om her. SelectedItem // et item der er i Selected mode (kan have en anden style f.eks.) Separator // det der adskiller items.
Det var så lidt... du skriver bare hvis der er noget :o) mvh
Synes godt om
Ny brugerNybegynder
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.