1

次のSQL Server 2008r2データソースにバインドされたasp.net gridviewがあります。

<asp:SqlDataSource ID="dsFault" runat="server" DataSourceMode="DataSet" 
 ConnectionString="<%$ ConnectionStrings:ESBExceptionDb %>"
SelectCommand="select * from Fault order by datetime desc"></asp:SqlDataSource>

私の Fault テーブルには、datetime 型の DateTime という列があります。この列に格納されている値は UTC 形式であり、ブラウザーのローカル タイムゾーンで表示する必要があります。

次のように、グリッド ビューの Columns コレクションにテンプレート フィールドを追加しました。

<asp:TemplateField>
  <ItemTemplate>
   <asp:Label ID="lblLocalTime" runat="server" 
    Text='<%# String.Format("{0:f}", Eval("DateTime").ToLocalTime()) %>'>
   </asp:Label>
  </ItemTemplate>    
</asp:TemplateField>

ページを参照すると、次のエラーが表示されます。

CS1061: 'object' does not contain a definition for 'ToLocalTime' and no
extension method 'ToLocalTime' accepting a first argument of type 'object' 
could be found (are you missing a using directive or an assembly reference?)

どこが間違っているのか誰か教えてください。

ありがとう、ロブ。

4

5 に答える 5

2

データベースから返される値は C# オブジェクトではありませEval("DateTime") DataTime

関数は c# オブジェクト.ToLocalTime()に属しているため、DateTime使用できません。

オブジェクトを文字列に変換してから関数を使用する必要があります.ToLocalTime()

<asp:TemplateField>
  <ItemTemplate>
   <asp:Label ID="lblLocalTime" runat="server" 
    Text='<%# Convert.ToDateTime(Eval("DateTime")).ToLocalTime() %>'>
   </asp:Label>
  </ItemTemplate>    
</asp:TemplateField>

オブジェクトに変換したものはDateTime、利用可能な任意の形式を使用できます

例えば

Text='<%# Convert.ToDateTime(Eval("DateTime")).ToString("dd/MM/yyyy") %>'
于 2013-02-01T12:26:50.420 に答える
0

このようにしてみてください

<%# Eval("DateTime", "{0:T}")%>

<asp:Label ID="lblLocalTime" runat="server" 
    Text='<%# Eval("DateTime", "{0:T}")%>'>
   </asp:Label>
于 2013-02-01T12:26:42.290 に答える
0

これでうまくいきます!これを試してみてください。

<asp:TemplateField HeaderText="Account Created">
   <ItemTemplate>
      <asp:Label ID="lblLocalTime" runat="server" 
         Text='<%# Convert.ToDateTime(Eval("CreateDate", "{0:g}")).ToLocalTime() %>'>
      </asp:Label>
   </ItemTemplate>    
</asp:TemplateField>
于 2013-05-04T07:00:23.943 に答える