1

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

目前该字段绑定如下:

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

2 回答 2

1

为什么不使用Date作为数据库中的日期?您可以使用以下示例代码将 int 转换为 datetime:

var sdate = intdate.ToString();
var date = DateTime.ParseExact(sdate, "yyy/MM/dd", CultureInfo.InvariantCulture);
于 2011-02-01T11:22:19.093 回答
1

感谢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
}
于 2011-02-01T12:40:14.103 回答