Avatar billede ihtezaz Praktikant
06. oktober 2004 - 23:52 Der 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.
Avatar billede snepnet Nybegynder
06. oktober 2004 - 23:59 #1
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 ?

mvh
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:03 #2
det er et datagrid
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:05 #3
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.

mvh
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:08 #4
det ville også være fint hvis du skrev formatet tilbage.... altså om du vil have det som
YYYY-MM-DD (2004-12-24)
eller hvordan det nu skal være.
mvh
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:10 #5
ja det ved aspx kode, idet jeg har tilføjet det fra toolbox'en
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:11 #6
Formatet tilbage?, det er jeg ikke helt med på, mener du til DB'en.
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:12 #7
Ok... du kan lige få et eksempel her :

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

<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
    <Columns>                       
        <asp:BoundColumn DataField="FldDateTime" DataFormatString="{0:yyyy-MM-dd}"></asp:BoundColumn>
    </Columns>
</asp:DataGrid></P>

mvh
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:14 #8
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
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:14 #9
Jeg skriver som en padde...
(så med "tilbage"... mente jeg bare tilbage til mig)
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:20 #10
ok..he he.

Jeg har prøvet dit eksempel, men det tilføjer til de eksisterende coloner, dvs. jeg får også den coloner med dato, som er i forkert format.
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:23 #11
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 ?

mvh
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:25 #12
nej det har jeg ikke, det lyder avanceret.
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:27 #13
det er nu ikke fordi det er den store videnskab... hvilket udviklingsmiljø (hvis noget) bruger du ? (så skal du få en "opskrift")
mvh
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:29 #14
For jeg vil have de resterende colloner med fra mit dataset, bortset fra dato kolonen, som ikke er i det rette format
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:29 #15
VS.NET 2002
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:38 #16
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 :

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        e.Item.Cells[0].Text = DateTime.Parse(e.Item.Cells[0].Text).ToString("dd-MM-yyyy");
    }
}

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å]

mvh
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:38 #17
(koden vil smide en exception, hvis det der står i cellen ikke kan konverteres til en dato)
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:51 #18
Perfekt, det var lige hvad jeg skulle bruge, og så fik jeg lært noget nyt. Tak, smide et svar snepnet.
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 00:52 #19
kan du evt. fortælle mig hvad det siger: e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem
Avatar billede snepnet Nybegynder
07. oktober 2004 - 00:59 #20
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.

var det ok ?
(ellers bare spørg).

mvh
Avatar billede ihtezaz Praktikant
07. oktober 2004 - 01:07 #21
Ok mange tak. Vi skrives nok ved, idet jeg er igang med et opgave og ikke er helt rutineret i ASP.NET.
Avatar billede snepnet Nybegynder
07. oktober 2004 - 01:10 #22
Det var så lidt... du skriver bare hvis der er noget :o)
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