Avatar billede krestenbanke Nybegynder
12. august 2010 - 21:41 Der er 13 kommentarer og
1 løsning

DataFormatString fra 5-14 til 05.00-14.00

Hej,

Jeg har et gridview, hvor jeg i en kolonne viser et tids-interval, som er sammensat i en linq-query.

Problemet er, at tidspunktet ser ud som eksempelvis: 5-14, hvilket ikke ser så prof. ud, og jeg vil derfor gerne have det formateret til 05.00-14.00 i den pågældende kolonne.

Hvordan dælen gør jeg det?

Håber I kan hjælpe!
Avatar billede janus_007 Nybegynder
12. august 2010 - 22:10 #1
Brug DateTime...

var dt = new DateTime(2000, 1, 1, 5, 0, 50);

var time = dt.ToShortTimeString();
Avatar billede krestenbanke Nybegynder
12. august 2010 - 22:22 #2
Hej Janus,

Problemet er, at jeg fra min linq får to tidspunkter på dagen, der giver et tids-interval, hvor jeg indsætter et "-" som seperator... Disse bliver vist som eks. 5-13 og jeg vil gerne have, at det i stedet bliver vist som 05.00-13.00.
Avatar billede Syska Mester
12. august 2010 - 23:27 #3
Vi skal lige lidt længere tilbage.

Hvor kommer din data fra ? hvad er org typen? Er det fra en database og er typen der datetime? time?

Lyder som om du i din linq sætning ( måske linq2sql ) laver det om ...

mvh
Avatar billede krestenbanke Nybegynder
12. august 2010 - 23:41 #4
Roger!

Jeg trækker data ud med ling2sgl og bruger følgende linie, hvor jeg henter to tidspunkter, som er DateTime, og sætter en "-" imellem disse. Dette sætter jeg ind i min kolonne i gridview'et:

TimeSpand = starTime.Value.Hour.ToString() + "-" + endTime.Value.Hour.ToString(),

Jeg har prøvet med starTime.Value.ToShortTimeString() men dette funger ikke...
Avatar billede Syska Mester
12. august 2010 - 23:47 #5
da Hour er en int, bør du kunne gøre sådan her:

int i = 10;
string s = i.ToString("00.00");

mvh
Avatar billede Syska Mester
12. august 2010 - 23:52 #6
arghh, jo ik' et komma tal ... tænke tænke.

Well, hvis det altid er hele timer, så det ik' et problem.

Der kan du vel bare gøre:

int hour = 9;
string s = hour.ToString("00") + ":00";

mvh
Avatar billede krestenbanke Nybegynder
13. august 2010 - 00:40 #7
Tak tak - jeg bruger en datatable, hvor jeg gennemløber alle items, så det funger ikke helt, men løsningen må være, at jeg blot append'er de tegn jeg skal have ind:

TimeSpand = starTime.Value.Hour + ":00-" + endTime.Value.Hour + ":00",

.Lidt høker, men det går vel...

Buzz, smid bare et svar ;-)
Avatar billede Syska Mester
13. august 2010 - 00:48 #8
Du må smide lidt mere kode ... så er det nemmere at hjælpe.

Det kan laves bedre.

mvh
Avatar billede Syska Mester
13. august 2010 - 00:50 #9
DateTime dt = DateTime.Now;
string s = dt.ToString("HH:mm");
Console.WriteLine(s);

Burde give det i formatet: 00:00, men kræver det er en DateTime.

Men nu siger du så at det er en DataTable du bruger, før var det linq2sql :-s

Men post din kode og lad og se på det.
Avatar billede janus_007 Nybegynder
14. august 2010 - 13:05 #10
Det er stadig som jeg skrev tidligere:


TimeSpand = starTime.ToShortTimeString() + "-" + endTime.ToShortTimeString()

Hvorfor bruger du ikke det?
Avatar billede Syska Mester
14. august 2010 - 21:20 #11
Overstående kan han ikke hvis det er en TimeSpan der kommer ud af det, men ja, det gør han ikke særligt klart om hvad det reelt set er han får ud.

Men nu må vi se når han svarer :-)

mvh
Avatar billede krestenbanke Nybegynder
17. august 2010 - 16:42 #12
Hey! Tak for de mange svar, har ikke fået svaret jer, da jeg har været væk i weekenden - beklager!

Problemet med min linq2sql er delvist selvforskyldt. Jeg laver i min kode den IEnumerable, jeg returnerer fra min linq query, om til en datatable for at kunne lave sorting og paging på gridviewet. Ved ikke om dette giver mening?

Anywho - så er det selve konverteringen til datatable der gør, at div. metoder brugt i queryen ikke kan konverteres - da det ikke er "items"...

Jeg bruger følgende kode til det:

        public static DataTable ToDataTable<T>(this IEnumerable<T> items)
        {
            // Create the result table, and gather all properties of a T       
            DataTable table = new DataTable(typeof(T).Name);
            PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

            // Add the properties as columns to the datatable
            foreach (var prop in props)
            {
                Type propType = prop.PropertyType;

                // Is it a nullable type? Get the underlying type
                if (propType.IsGenericType && propType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
                    propType = new NullableConverter(propType).UnderlyingType;

                table.Columns.Add(prop.Name, propType);
            }

            // Add the property values per T as rows to the datatable
            foreach (var item in items)
            {
                var values = new object[props.Length];
                for (var i = 0; i < props.Length; i++)
                    values[i] = props[i].GetValue(item, null);

                table.Rows.Add(values);
            }

            return table;
        }

Ved ikke om der er nogen let work around - det er vel grundlæggende ikke den snedigste måde at gå fra linq2sql til gridview på??

Vh.
Avatar billede Syska Mester
17. august 2010 - 17:52 #13
Hvorfor laver du ikke en LinqDataSource, og så binder den til dit GridView ?

Virker som den nemmeste løsning lige i min verden som jeg lige kan komme på.

mvh
Avatar billede krestenbanke Nybegynder
17. august 2010 - 20:28 #14
Ok - takker mange gange for jeres svar!

Jeg prøver at bokse løsningen om, så jeg bruger en linqDataSource i stedet for DataTable.
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