我的数据库中有一个整数字段,其中包含yyyyMMdd
形式的日期值。是否可以将此解析为dd/MM/yyyy
形式的日期,并绑定到数据网格?
目前该字段的绑定如下:
<asp:boundcolumn datafield="access_date" headertext="Last logged on"></asp:boundcolumn>
答案 0 :(得分:1)
为什么不对数据库中的日期使用日期? 您可以使用以下示例代码将int转换为datetime:
var sdate = intdate.ToString();
var date = DateTime.ParseExact(sdate, "yyy/MM/dd", CultureInfo.InvariantCulture);
答案 1 :(得分:1)
感谢 gor 指导我完成此操作。 他的答案本身并不是整个解决方案,但经过一些反复评论后,我得到了一个很好的解决方案。
我不得不在网格中使用asp:boundcolumn
,而是必须使用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
}