C# 绑定到gridview的LINQ查询(日期问题)

C# 绑定到gridview的LINQ查询(日期问题),c#,asp.net,linq,gridview,C#,Asp.net,Linq,Gridview,我对绑定到gridview的LINQ查询中的日期有问题。这是我正在使用的代码,没有什么特别之处,但问题是我无法将gridview中的日期(p.aktivnost.aktivnost.datum是date)格式化为“dd.MM.yyyy”,而是显示为“dd.MMM.yyyy.0:00:00”,这是我想要避免的 我试图寻找解决方案,但没有一个解决方案是有用的。唯一让我部分成功的解决方案是使用“date=p.aktivnost.aktivnost_datum.Value.Day”,但之后我无法添加其他

我对绑定到gridview的LINQ查询中的日期有问题。这是我正在使用的代码,没有什么特别之处,但问题是我无法将gridview中的日期(p.aktivnost.aktivnost.datum是date)格式化为“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});
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 } );

在Gridview显示代码中,执行以下操作

<asp:BoundField DataField="p.aktivnost.aktivnost.datum" 
    DataFormatString="{0:MM-dd-yyyy}" HtmlEncode="false" 
    HeaderText="p.aktivnost.aktivnost.datum" />
或者像在另一个答案中提到的那样,你可以自由编辑收藏,就像在内存中一样

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

在Gridview显示代码中,执行以下操作

<asp:BoundField DataField="p.aktivnost.aktivnost.datum" 
    DataFormatString="{0:MM-dd-yyyy}" HtmlEncode="false" 
    HeaderText="p.aktivnost.aktivnost.datum" />
或者像在另一个答案中提到的那样,你可以自由编辑收藏,就像在内存中一样

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

中选择。。。新建
只需编写:

p.aktivnost.aktivnost_datum.ToString("dd.MM.yyyy")
编辑:

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

中选择。。。新建
只需编写:

p.aktivnost.aktivnost_datum.ToString("dd.MM.yyyy")
编辑:

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


请注意,在这种情况下,排序将无法正常工作,因为排序将基于字符串而不是日期。谢谢您的回答,但是,这将无法工作,因为LINQ不接受.toString()方法。我已经试过了,但它给出了一个错误。@Hvrach,这与Linq2Sql有关,而不是一般的Linq。如果在内存中进行格式化(请参阅我上面的编辑),它会工作得很好。实际上,我使用的是LINQ2实体。谢谢你的回答!这很有帮助!请注意,在这种情况下,排序将无法正常工作,因为排序将基于字符串而不是日期。谢谢您的回答,但是,这将无法工作,因为LINQ不接受.toString()方法。我已经试过了,但它给出了一个错误。@Hvrach,这与Linq2Sql有关,而不是一般的Linq。如果在内存中进行格式化(请参阅我上面的编辑),它会工作得很好。实际上,我使用的是LINQ2实体。谢谢你的回答!这很有帮助!谢谢您的回答,但这也不是解决方案,因为我的gridview中没有绑定字段,因为数据是动态绑定的。相同的gridview用于不同的查询,然后根据用户选择生成gridview。这不是我的选择。那你能控制什么?你是什么意思?这就是我的答案。aspx谢谢你的回答,第一个对我不起作用,Intellisense抱怨“aktivnost_datum=new”部分,第二个也没有,但正如你从我在问题中的编辑中看到的,它很有帮助!谢谢您的回答,但这也不是解决方案,因为我的gridview中没有绑定字段,因为数据是动态绑定的。相同的gridview用于不同的查询,然后根据用户选择生成gridview。这不是我的选择。那你能控制什么?你是什么意思?这就是我的答案。aspx谢谢你的回答,第一个对我不起作用,Intellisense抱怨“aktivnost_datum=new”部分,第二个也没有,但正如你从我在问题中的编辑中看到的,它很有帮助!