Avatar billede c-sharp Nybegynder
08. januar 2004 - 21:20 Der er 17 kommentarer og
1 løsning

Skal have fjernet klokken fra en dato og tid post

Jeg har en repeater der udskriver data fra databasen, i disse data er der et dato felt, dette dato felt indeholder både dato og tid men jeg vil kun have vist tiden i min udskrift på skærmen. Jeg har prøvet følgende men jeg får fejl:

<%Regex r = new Regex("(:)"); // Split on hyphens.
string[] s = r.split(DataBinder.Eval(Container.DataItem, "dato"));
response.write(s[0]);
%>
Avatar billede burningice Nybegynder
08. januar 2004 - 21:48 #1
1. lad vær med at brug DataBinder.Eval, det er en dræber ang. perfomance :(

2. prøv at konverter din string til en DateTime-struct og kald ToLongTimeString() på den.
Avatar billede nielsbrinch Nybegynder
08. januar 2004 - 21:58 #2
Cyberfessor, hvad skal man bruge i stedet for DataBinder.Eval?
Avatar billede burningice Nybegynder
08. januar 2004 - 22:10 #3
DataBinder.Eval benytter sig af Reflection til at caste ens object og få fat i den rigtige property. Dette er meget resourcekrævende, og da man som oftes ved hvilken type det drejer sig om, skal man caste den explicit. På den måde skal .net ikke til at regne ud ved runtime hvilken type det drejer sig om, og perfomancen vil få et løft.
Avatar billede burningice Nybegynder
08. januar 2004 - 22:11 #4
så koden kunne f.eks. se sådan her ud istedet:

<% DateTime.Parse(((MinType)Container.DataItem).Dato).ToLongTimeString(); %>
Avatar billede c-sharp Nybegynder
09. januar 2004 - 06:54 #5
Jeg har nu prøvet at skrive ovenstående kode:

<% DateTime.Parse(((DateTime)Container.DataItem).Dato).ToLongTimeString();%>


og får så følgende fejl når jeg afvikler koden:

Compiler Error Message: CS0246: The type or namespace name 'Container' could not be found (are you missing a using directive or an assembly reference?)
Avatar billede c-sharp Nybegynder
09. januar 2004 - 14:21 #6
Har dobblet pointne op håber det hjælper :-)
Avatar billede burningice Nybegynder
09. januar 2004 - 15:11 #7
der mangler lige en # i starten

<%# DateTime.Parse(((DateTime)Container.DataItem).Dato).ToLongTimeString() %>
Avatar billede c-sharp Nybegynder
09. januar 2004 - 22:15 #8
så får jeg følgende fejl:

Compiler Error Message: CS0117: 'System.DateTime' does not contain a definition for 'dato'
Avatar billede c-sharp Nybegynder
09. januar 2004 - 23:13 #9
Det her kan jeg få til at virke, men så bruger jeg DataBind.Eval og det er jo ikke optimalt.

<%#  ((DateTime)DataBinder.Eval(Container.DataItem, "dato")).ToLongDateString()%>
Avatar billede burningice Nybegynder
11. januar 2004 - 14:24 #10
hvad for en type objecter binder du til din repeater ? :)
Avatar billede c-sharp Nybegynder
11. januar 2004 - 14:41 #11
Jeg gør følgende:

DataSet ds = new DataSet();
myCommand.Fill(ds, "Nyheder");

Repeater1.DataSource = ds.Tables["Nyheder"].DefaultView;
Repeater1.DataBind();

Hvis det er det du mener?
Avatar billede burningice Nybegynder
11. januar 2004 - 17:18 #12
ah... mon ikke at Container.DataItem indeholder et object af typen DataRow så...

prøv det her:


<%# DateTime.Parse(((DataRow)Container.DataItem)["dato"].ToString()).ToLongTimeString() %>
Avatar billede c-sharp Nybegynder
11. januar 2004 - 17:29 #13
Så får jeg følgende fejl:

CS0246: The type or namespace name 'DataRow' could not be found (are you missing a using directive or an assembly reference?)
Avatar billede burningice Nybegynder
11. januar 2004 - 17:40 #14
:) du skal da huske at importe System.Data-namespacet
Avatar billede c-sharp Nybegynder
11. januar 2004 - 18:38 #15
Så får jeg følgende fejl:

System.InvalidCastException: Specified cast is not valid.
Avatar billede burningice Nybegynder
11. januar 2004 - 21:32 #16
bummelum... så er det fordi at den ikke er af typen DataRow :)

prøv at skriv typen ud på denne måde:

<%# Container.DataItem.GetType().ToString() %>
Avatar billede c-sharp Nybegynder
17. januar 2004 - 14:17 #17
Nå jeg har ikke lige haft tid til at rode mere med den del, men jeg finder nok ud af det. den her retunere i øvrigt et object: <%# Container.DataItem.GetType().ToString() %>

cyberfessor: smid et svar så skal du have tusind tak for din tålmodighed :-)
Avatar billede burningice Nybegynder
18. januar 2004 - 01:40 #18
hm.. træls.. det skal ellers virke... det er nemlig det DataBinder.Eval() metoden gør, bare runtime, og det er derfor det er en perfomance-killer. Hvis man nu kan gøre dens arbejde på forhånd vil det være meget bedre.
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