2011-04-27 40 views
11

在一个aspx页面我绑定的标签是这样的:如何格式化时间标记来显示日期仅在网格视图

<asp:TemplateField HeaderText="Date of Joining"> 
      <ItemTemplate> 
       <asp:Label ID="Label6" runat="server" Text='<%# Eval("date_of_joining") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Paid Priviledge Date"> 
      <ItemTemplate> 
       <asp:Label ID="Label8" runat="server" 
        Text='<%# Eval("paid_priviledge_date") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 

而后面的代码中,我结合网格视图像这样:(最小码给出)

GridView1.DataSource = dt2; 
GridView1.DataBind(); 

但在GridView列显示像这样的日期:

4/12/2011 12:00:00 AM  
4/4/2011 12:00:00 AM 

请建议如何牛逼o删除时间戳部分并只显示日期部分。

我知道如何通过使用ToString和SubString进行格式化。但我不能在gridview中做到这一点。

回答

8

在您的代码隐藏中创建一个FormatDate方法,并从您的gridview中调用该方法。
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
http://www.csharp-examples.net/string-format-datetime/

这部分将在你的代码去后面

private object FormatDate(DateTime input) 
{ 
    return String.Format("{0:MM/dd/yy}", input); 
} 

而且此位将在您的标记

<asp:TemplateField HeaderText="Date of Joining"> 
     <ItemTemplate> 
      <asp:Label ID="Label6" runat="server" Text='<%# FormatDate(Eval("date_of_joining")) %>'></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Paid Priviledge Date"> 
     <ItemTemplate> 
      <asp:Label ID="Label8" runat="server" 
       Text='<%# FormatDate(Eval("paid_priviledge_date")) %>'></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 

这走的是什么,我会叫D.R.Y.方法问题。如果您需要以任何方式修改格式。你可以简单地编辑方法背后的代码,它会降低所有标记的甜蜜爱情。

+1

我很抱歉先生..经过这么多天,当我回顾这个解决方案后,我发现我已经勾选了ilivewithian的答案,作为最合适的答案..但实际上你的答案是最有效的答案。我在勾选你的答案为现在是正确的。 – 2012-05-12 14:22:06

+0

如果你在标记中这样做,你可以在不必重新编译的情况下进行更改。 – Chad 2012-12-17 22:07:37

+1

@Chad,反对票,因为这不是你的偏好对我来说有点奇怪。皮肤有很多种方法可以让皮肤变白,我恰好是这些方法之一。我宁愿不要在标记中这样做,因为我喜欢保持它的干净。如果您不想重新编译,请在App.config中设置格式字符串。 – 2012-12-18 01:16:52

23

您可以为eval语句中指定的格式字符串:

Eval("date_of_joining", "{0:dd/MM/yyyy}") 
+0

非常好,我正在寻找这种超级有用的答案。谢谢很多先生 – 2011-04-27 16:09:31

+0

我不想听起来像“我是对的,你错了”,因为这绝对是一个正确的答案。然而,我的问题是......当你需要改变日期的格式时会发生什么?你是否经历了所有的标记以查找所有实例?通过将其设置为函数后面的代码,您可以在一个位置更改它,并将其传播到所有实例。 [DRY](http://en.wikipedia.org/wiki/Don%27t_repeat_yourself) – 2011-04-27 16:27:17

+0

公平点,我犯了打字的第一件事,工作到一个stackoverflow的答案。 – ilivewithian 2011-04-28 14:20:10

7

使用"{0:d}"为短日期格式。 尝试

Text='<%# Eval("paid_priviledge_date","{0:d}") %>' 

Text='<%# Eval("date_of_joining", "{0:d}") %>' 
1

可以在绑定的字段同样可以设置如下使用DataFormatString

<asp:Label ID="Label8" runat="server" Text='<%# Eval("paid_priviledge_date","{0:d}") %>'/> 
0
Text='<%# (Convert.ToDateTime((Eval("date_of_joining")))).ToShortDateString() %>' 

这是最简单的方法我发现。