Aspxページで、次のようにラベルをバインドしています。
<asp:TemplateField HeaderText="Date of Joining">
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# Eval("date_of_joining") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Paid Priviledge Date">
<ItemTemplate>
<asp:Label ID="Label8" runat="server"
Text='<%# Eval("paid_priviledge_date") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
そして、背後にあるコードでは、このようにグリッドビューをバインドしています:(最小コードが与えられています)
GridView1.DataSource = dt2;
GridView1.DataBind();
しかし、グリッドビューの列には次のような日付が表示されます。
4/12/2011 12:00:00 AM
4/4/2011 12:00:00 AM
タイムスタンプ部分を削除し、日付部分のみを表示する方法を提案してください。
ToStringとSubStringを使用してフォーマットすることでこれを行う方法を知っています。しかし、グリッドビューではこれを行うことができません。
コードビハインドにFormatDate
メソッドを作成し、グリッドビューから呼び出します。
http://msdn.Microsoft.com/en-us/library/8kb3ddd4.aspx
http://www.csharp-examples.net/string-format-datetime/
この部分はコードビハインドに含まれます
private object FormatDate(DateTime input)
{
return String.Format("{0:MM/dd/yy}", input);
}
そして、このビットはあなたのマークアップになります
<asp:TemplateField HeaderText="Date of Joining">
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# FormatDate(Eval("date_of_joining")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Paid Priviledge Date">
<ItemTemplate>
<asp:Label ID="Label8" runat="server"
Text='<%# FormatDate(Eval("paid_priviledge_date")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
これは私が問題への D.R.Y。 アプローチと呼ぶものです。何らかの方法でフォーマットを変更する必要がある場合。コードビハインドメソッドを編集するだけで、すべてのマークアップに甘い愛が降り注ぐでしょう。
Evalステートメントのフォーマット文字列を指定できます。
Eval("date_of_joining", "{0:dd/MM/yyyy}")
使用する "{0:d}"
短い日付形式の場合。試してみてください
Text='<%# Eval("paid_priviledge_date","{0:d}") %>'
そして
Text='<%# Eval("date_of_joining", "{0:d}") %>'
バインドされたフィールドで DataFormatString を使用できます。これは、次のように設定できます。
<asp:Label ID="Label8" runat="server" Text='<%# Eval("paid_priviledge_date","{0:d}") %>'/>
Text='<%# (Convert.ToDateTime((Eval("date_of_joining")))).ToShortDateString() %>'
これは私が発見した最も簡単な方法です。