C# 格式Gridview单元格的日期格式
我对gridview单元格中从(dd/MM/yyyy H:ss:MM)到(yyy-MM-dd)的日期格式的格式感到困惑 然而,我并没有在.aspx页面中创建任何列,而是使用来自SQL的动态绑定将结果绑定到Gridview数据源。所以,添加类似于吼叫的代码是行不通的C# 格式Gridview单元格的日期格式,c#,asp.net,date,gridview,formatting,C#,Asp.net,Date,Gridview,Formatting,我对gridview单元格中从(dd/MM/yyyy H:ss:MM)到(yyy-MM-dd)的日期格式的格式感到困惑 然而,我并没有在.aspx页面中创建任何列,而是使用来自SQL的动态绑定将结果绑定到Gridview数据源。所以,添加类似于吼叫的代码是行不通的 <ItemTemplate> <%#Convert.ToDateTime(Eval("StartDate")).ToString("yyyy-MM-dd") %> </ItemTemplate&g
<ItemTemplate>
<%#Convert.ToDateTime(Eval("StartDate")).ToString("yyyy-MM-dd") %>
</ItemTemplate>
那么,有什么方法可以更改日期值的格式吗?您可以在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")
}
}
将绑定代码替换为:
<ItemTemplate>
<%# Eval("StartDate", "{0:yyyy-MM-dd}") %>
</ItemTemplate>
不,我的aspx页面中甚至没有类似“xxxxxx”的代码。所有项目/列都是通过MSSQL动态生成的。在SQL中,value已经是日期类型了。我认为这应该是GridView格式问题。@Edmund如果是日期类型,请删除Convert.ToDateTime。您读取的值已经是日期时间
Eval(“StartDate”).ToString(“yyyy-MM-dd”)
在查询中是足够的,它已经是一个日期类型值。一旦Gridview.databind(),日期将显示为“dd/MM/yyyy H:ss:MM”。@Edmund数据库中的字段类型是什么?如果是任何与日期相关的类型,则不需要转换。日期没有格式,它们是二进制类型。查询将以DateTime
的形式返回它们,因此一个简单的.ToString(“yyyy-MM-dd”)
就足够了。@Edmund如果是文本,您有一个严重的错误-您应该使用正确的类型来存储日期。无论您如何确定字符串始终看起来像dd/MM/yyyy
,总会有人以不同的格式输入文本。甚至可能是你。一旦发生这种情况,您将无法找到不正确的值-2018年5月4日的意思是什么?@karthikeyanagaraj SQL中的字符串格式是一个非常糟糕的主意。双重转换更糟糕。如果字段是日期
或日期时间
,则无需转换为文本,日期值将被检索为日期时间值,以备显示和格式化。感谢未解释的向下投票。幸好有一个机器人可以清除连续的否决票
<a href='<%# Eval("ProductID", "details.asp?id={0}") %>'>See Details</a>