0

以下に示すように、境界付きフィールドに日付があります。

<asp:BoundField DataField="closeDate" HeaderText="End Date"  SortExpression="closeDate" htmlencode="false" dataformatstring="{0:d}" >
  <ItemStyle CssClass="georgeTest"></ItemStyle>
  <HeaderStyle CssClass="georgeTest"> </HeaderStyle> 
</asp:BoundField>

私はこの方法でフォーマットしようとしています:「12/18/2012」は、dataformatstring上記の両方のフォーマットを使用する属性でdataformatstring="{0:dd/MM/yyyy}}"、両方とも同じ値「1/1/0001」を常に提供し、できませんなぜこれが起こるのかを理解してください。

私は MS Visual Studio 2010 と ASP.NET 4.0 で作業しています。

フィールドはDateTime型です。

4

1 に答える 1

1

今後の参考のために、コメントのリンクコンテンツを回答として投稿しました。

ASP.NET 2.0 を使用して GridView で日付形式を設定する方法 (HtmlEncode プロパティを使用)

Peter Kellner による .Net 2.0、ASP.NET 2.0 (別名、DataFormatString="{0:M-dd-yyyy}" 問題) の投稿

非常に一般的な要望は、GridView の列を設定して、DateTime 型の月、日、年だけを表示することです。問題は、デフォルトでは、BoundField 属性の HtmlEncode プロパティ (

<columns>
  <asp:BoundField headertext="CreationDate" dataformatstring="{0:M-dd-yyyy}" 
       datafield="CreationDate"  />
</columns>

これを期待どおりに機能させるには、2 つの選択肢があります。最初の選択肢は、次のように単純に HtmlEncode を false に設定することです。

<asp:GridView id="GridView1" runat="server" >
<columns>
  <asp:BoundField headertext="CreationDate" dataformatstring="{0:M-dd-yyyy}" 
       datafield="CreationDate"  HtmlEncode="false" />
</columns>

2 番目の選択肢は、列をテンプレートにして、次のようにラベルまたはテキスト フィールドにフォーマット文字列を直接設定することです。

<asp:GridView id="GridView3" runat="server" >
 <columns>
  <asp:TemplateField headertext="CreationDate" >
   <edititemtemplate>
    <asp:Label id="Label1" runat="server" Label.Text='<%# Eval("CreationDate", "{0:M-dd-yyyy}") %>'>
    </asp:Label>
   </edititemtemplate>
   <itemtemplate>
    <asp:Label id="Label1" runat="server" Label.Text='<%# Bind("CreationDate", "{0:M-dd-yyyy}") %>'>;
    </asp:Label>
   </itemtemplate>
  </asp:TemplateField>
 </columns>
</asp>
于 2012-12-20T16:06:11.357 に答える