Пользовательский формат целого числа в качестве даты в DataGrid - PullRequest
1 голос
/ 01 февраля 2011

В моей базе данных есть целочисленное поле, которое содержит значение даты в форме yyyyMMdd.Можно ли проанализировать это как дату в форме dd/MM/yyyy как привязанную к сетке данных?

В настоящее время поле связано так:

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

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Спасибо Гор за то, что помогли мне пройти через это.Сам по себе его ответ не был полным решением, но после некоторого комментирования назад и вперед я нашел хорошее решение.

Вместо использования 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
}
1 голос
/ 01 февраля 2011

Почему вы не используете Дата для дат в базе данных?Вы можете преобразовать int в datetime, используя следующий пример кода:

var sdate = intdate.ToString();
var date = DateTime.ParseExact(sdate, "yyy/MM/dd", CultureInfo.InvariantCulture);
...