自定义格式整数作为DataGrid中的日期

时间:2011-02-01 11:17:10

标签: asp.net date datagrid integer custom-formatting

我的数据库中有一个整数字段,其中包含yyyyMMdd形式的日期值。是否可以将此解析为dd/MM/yyyy形式的日期,并绑定到数据网格?

目前该字段的绑定如下:

<asp:boundcolumn datafield="access_date" headertext="Last logged on"></asp:boundcolumn>

2 个答案:

答案 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
}