Отображение сетки asp.net с помощью ConvertTimeFromUtc

<asp:gridview id="GridView1" runat="server" datasourceid="SqlDS1" autogeneratecolumns="False" onrowcommand="GridView1_OnRowCommand" allowsorting="True">
<columns>
 <asp:boundfield datafield="ID" headertext="Identification">
 <asp:boundfield datafield="AnalasisDate" headertext="Time Stamp">
 ...
</asp:boundfield></asp:boundfield></columns></asp:gridview>

Мне нужно преобразовать дату Analasis в следующее:

TimeZoneInfo.ConvertTimeFromUtc(result.AnalasisDate.Value, tz).

Мне было интересно, есть ли способ сделать это в файле aspx.cs, чтобы он отображал версию ConvertTimeFromUtc при ее отображении.

Мне было интересно, есть ли что-то, что я мог бы сделать в GridView1_RowDataBound чтобы обновить значение AnalasisDate

1 ответ

Вы можете сделать это в разметке с помощью TemplateField:

<asp:templatefield headertext="Time Stamp">
 <itemtemplate>
 <%# TimeZoneInfo.ConvertTimeFromUtc(Eval(result.AnalasisDate), GetTimeZone()) %>
 </itemtemplate>
</asp:templatefield>

Здесь GetTimeZone является защищенным или общедоступным методом, который должен быть объявлен в коде за классом и вернуть необходимый часовой пояс.

В качестве альтернативы вы можете оставить всю логику преобразования функции кода, например ConvertFromUtc, и вызвать ее внутри :

<asp:templatefield headertext="Time Stamp">
 <itemtemplate>
 <%# ConvertFromUtc(Eval(result.AnalasisDate)) %>
 </itemtemplate>
</asp:templatefield>

licensed under cc by-sa 3.0 with attribution.