wegelagerer
wegelagerer

Reputation: 3710

LINQ query binded to gridview (problem with date)

I have problem regarding date in LINQ query which is binded to a gridview. This is the code I'm using, nothing special, but the problem is I can't format the date (p.aktivnost.aktivnost.datum is date) in gridview to be formatted like "dd.MM.yyyy." and instead it is being shown as "dd.MMM.yyyy. 0:00:00" which I want to avoid.

I've tried to search for the solution, but none of the solutions I've found were helpful. The only solution that gave me partial success was when I used "date = p.aktivnost.aktivnost_datum.Value.Day", but then I was unable to add the other values (for month and for year).

As I sad, the following code was an idea that didn't work.

date = p.aktivnost.aktivnost_datum.Value.Day + "." + p.aktivnost.aktivnost_datum.Value.month + "." + p.aktivnost.aktivnost_datum.Value.Day

Now, the code used for binding data. Gridview doesn't contain any columns on page load.

var predavaci = from p in db.predavacs
                                where p.osoba_id == idOsoba
                                orderby p.osoba.osoba_prezime
                                select new { p.aktivnost.tema.tema_naziv, p.aktivnost.ciklu.ciklus_naziv, p.aktivnost.podciklu.naziv_podciklus, p.aktivnost.aktivnost_datum, p.aktivnost.mjesto.mjesto_naziv, p.aktivnost.ciljana_grupa.ciljana_grupa_naziv };


                    gvIzvjestaj.DataSource = predavaci;
                    DataBind();

                    gvIzvjestaj.HeaderRow.Cells[0].Text = "Naziv aktivnosti";
                    gvIzvjestaj.HeaderRow.Cells[1].Text = "Ciklus";
                    gvIzvjestaj.HeaderRow.Cells[2].Text = "Podciklus";
                    gvIzvjestaj.HeaderRow.Cells[3].Text = "Datum";
                    gvIzvjestaj.HeaderRow.Cells[4].Text = "Mjesto";
                    gvIzvjestaj.HeaderRow.Cells[5].Text = "Ciljna grupa";}

Solution:

gvIzvjestaj.DataSource = predavaci.ToList().Select(p => new { p.tema_naziv, p.ciklus_naziv, p.naziv_podciklus, datum = p.aktivnost_datum.Value.Day + "." + p.aktivnost_datum.Value.Month + "." + p.aktivnost_datum.Value.Year + ".",p.mjesto_naziv,p.ciljana_grupa_naziv});

Upvotes: 0

Views: 1047

Answers (2)

Jimmy
Jimmy

Reputation: 9815

In your Gridview display code do something like this

<asp:BoundField DataField="p.aktivnost.aktivnost.datum" 
    DataFormatString="{0:MM-dd-yyyy}" HtmlEncode="false" 
    HeaderText="p.aktivnost.aktivnost.datum" />

EDIT

Try this:

var predavaci = from p in db.predavacs
where p.osoba_id == idOsoba
orderby p.osoba.osoba_prezime
select new
{
    p.aktivnost.tema.tema_naziv,
    p.aktivnost.ciklu.ciklus_naziv,
    p.aktivnost.podciklu.naziv_podciklus,
    aktivnost_datum = new {
        string.Format("{0}.{1}.{2}",
        p.aktivnost.aktivnost_datum.Day,
        p.aktivnost.aktivnost_datum.Month,
        p.aktivnost.aktivnost_datum.Year)
    },
    p.aktivnost.mjesto.mjesto_naziv,
    p.aktivnost.ciljana_grupa.ciljana_grupa_naziv
};

Or like mentioned in another answer, you're free to edit the collection like normal once it's in memory.

gvIzvjestaj.DataSource = 
    predavaci.ToList().Select(q => 
        new {
            q.aktivnost.tema.tema_naziv,
            q.aktivnost.ciklu.ciklus_naziv,
            q.aktivnost.podciklu.naziv_podciklus,
            q.aktivnost.aktivnost_datum.ToString("dd.MM.yyyy"),
            q.aktivnost.mjesto.mjesto_naziv,
            q.aktivnost.ciljana_grupa.ciljana_grupa_naziv
        });

Upvotes: 1

Klaus Byskov Pedersen
Klaus Byskov Pedersen

Reputation: 120937

In your select ... new just write:

p.aktivnost.aktivnost_datum.ToString("dd.MM.yyyy")

EDIT:

var predavaci = (from p in db.predavacs
                            where p.osoba_id == idOsoba
                            orderby p.osoba.osoba_prezime).ToList().Select(p => 
  new { p.aktivnost.tema.tema_naziv, p.aktivnost.ciklu.ciklus_naziv, p.aktivnost.podciklu.naziv_podciklus, p.aktivnost.aktivnost_datum, p.aktivnost.mjesto.mjesto_naziv, p.aktivnost.ciljana_grupa.ciljana_grupa_naziv } );

Upvotes: 2

Related Questions