我很困惑格栅视图中格式化日期格式(dd / MM / yyyy H:ss:mm)到(yyyy-MM-dd)。
但是,我还没有在.aspx-page中创建任何列,但是使用SQL的动态绑定将结果绑定到Gridview数据源。因此,添加类似的代码并不能正常工作。
<ItemTemplate>
<%#Convert.ToDateTime(Eval("StartDate")).ToString("yyyy-MM-dd") %>
</ItemTemplate>
那么,有没有办法改变日期值的格式?
答案 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
作为date
或datetime
返回。如果您将日期字段转换为CAST()
或CONVERT()
的文字,请删除转化。
<强>解释强>
如果数据库字段是与日期相关的类型,例如date
,datetime
等,则它没有格式。它是二进制值。当你阅读它时,除非你明确将它转换为字符串(坏主意),否则它将被检索为DateTime值,它也没有任何格式。格式仅在将二进制值转换为字符串时适用。
DataBinder.Eval有一个重载,接受格式字符串,类似于String.Format
并返回一个字符串。
文档展示了如何使用此重载生成URL链接:
<a href='<%# Eval("ProductID", "details.asp?id={0}") %>'>See Details</a>