LINQ-запрос привязан к gridview (проблема с датой) - PullRequest
0 голосов
/ 18 февраля 2011

У меня проблема с датой в запросе LINQ, которая привязана к сетке. Это код, который я использую, ничего особенного, но проблема в том, что я не могу отформатировать дату (p.aktivnost.aktivnost.datum is date) в gridview, чтобы она была отформатирована как «dd.MM.yyyy». и вместо этого он отображается как «dd.MMM.yyyy. 0:00:00», которого я хочу избежать.

Я пытался найти решение, но ни одно из найденных решений не было полезным. Единственное решение, которое дало мне частичный успех, было, когда я использовал «date = p.aktivnost.aktivnost_datum.Value.Day», но затем я не смог добавить другие значения (для месяца и для года).

Как мне грустно, следующий код был идеей, которая не сработала.

дата = p.aktivnost.aktivnost_datum.Value.Day + "." + p.aktivnost.aktivnost_datum.Value.month + "." + p.aktivnost.aktivnost_datum.Value.Day

Теперь код, используемый для привязки данных. Gridview не содержит столбцов при загрузке страницы.

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";}

Решение:

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});

Ответы [ 2 ]

2 голосов
/ 19 февраля 2011

В вашем select ... new просто напишите:

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 } );
1 голос
/ 19 февраля 2011

В вашем коде дисплея Gridview сделайте что-то вроде этого

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

РЕДАКТИРОВАТЬ

Попробуйте:

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
};

Или, как упоминалось в другом ответесвободно редактировать коллекцию, как обычно, когда она находится в памяти.

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
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...