我的数据库中有一个整数字段,其中包含表单中的日期值yyyyMMdd
。是否可以将其解析dd/MM/yyyy
为绑定到数据网格的表单中的日期?
目前该字段绑定如下:
<asp:boundcolumn datafield="access_date" headertext="Last logged on"></asp:boundcolumn>
我的数据库中有一个整数字段,其中包含表单中的日期值yyyyMMdd
。是否可以将其解析dd/MM/yyyy
为绑定到数据网格的表单中的日期?
目前该字段绑定如下:
<asp:boundcolumn datafield="access_date" headertext="Last logged on"></asp:boundcolumn>
为什么不使用Date作为数据库中的日期?您可以使用以下示例代码将 int 转换为 datetime:
var sdate = intdate.ToString();
var date = DateTime.ParseExact(sdate, "yyy/MM/dd", CultureInfo.InvariantCulture);
感谢gor指导我完成这件事。他的回答本身并不是完整的解决方案,但经过一些来回评论后,我最终得到了一个很好的解决方案。
asp:boundcolumn
我不必在网格中使用 a ,asp:templatecolumn
而是通过绑定表达式使用和显示它(就像gor在他的评论中解释的那样,尽管我认为他的答案是基于使用asp:listview
控件,而我使用旧asp:datagrid
控件)。
<columns>
集合中asp:datagrid
:<asp:TemplateColumn headertext="Last logged on" >
<ItemTemplate><%#DateStringFromInt(Eval("access_date"))%></ItemTemplate>
</asp:TemplateColumn>
protected string DateStringFromInt(object value)
{
DateTime date;
if (DateTime.TryParseExact(value.ToString(), "yyyyMMdd",
CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal,
out date))
{
return date.ToString("dd/MM/yyyy");
}
return value.ToString(); //Return original if not expected format
}