格式化Gridview单元格的日期格式

时间:2018-04-18 07:14:49

标签: c# asp.net date gridview formatting

我很困惑格栅视图中格式化日期格式(dd / MM / yyyy H:ss:mm)到(yyyy-MM-dd)。

但是,我还没有在.aspx-page中创建任何列,但是使用SQL的动态绑定将结果绑定到Gridview数据源。因此,添加类似的代码并不能正常工作。

<ItemTemplate>
    <%#Convert.ToDateTime(Eval("StartDate")).ToString("yyyy-MM-dd") %>
</ItemTemplate>

那么,有没有办法改变日期值的格式?

2 个答案:

答案 0 :(得分:0)

你可以在RowDataBound事件

中完成
protected void gvrequests_RowDataBound(Object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
          string strTemp= e.Row.Cells[3].Text;

        e.Row.Cells[3].Text=Convert.ToDateTime(strTemp).ToString("yyyy-MM-dd h:mm tt")
        }
   }

答案 1 :(得分:-1)

用以下代码替换您的绑定代码:

<ItemTemplate>
    <%# Eval("StartDate", "{0:yyyy-MM-dd}") %>
</ItemTemplate>

请勿更改您的查询,实际上请确保将StartDate作为datedatetime返回。如果您将日期字段转换为CAST()CONVERT()的文字,请删除转化。

<强>解释

如果数据库字段是与日期相关的类型,例如datedatetime等,则它没有格式。它是二进制值。当你阅读它时,除非你明确将它转换为字符串(坏主意),否则它将被检索为DateTime值,它也没有任何格式。格式仅在将二进制值转换为字符串时适用。

DataBinder.Eval有一个重载,接受格式字符串,类似于String.Format并返回一个字符串。

文档展示了如何使用此重载生成URL链接:

<a href='<%# Eval("ProductID", "details.asp?id={0}") %>'>See Details</a>