web-dev-qa-db-ja.com

グリッドビューでのみ日付を表示するようにタイムスタンプをフォーマットする方法

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を使用してフォーマットすることでこれを行う方法を知っています。しかし、グリッドビューではこれを行うことができません。

12
Robin Agrahari

コードビハインドに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。 アプローチと呼ぶものです。何らかの方法でフォーマットを変更する必要がある場合。コードビハインドメソッドを編集するだけで、すべてのマークアップに甘い愛が降り注ぐでしょう。

11
Chase Florell

Evalステートメントのフォーマット文字列を指定できます。

Eval("date_of_joining", "{0:dd/MM/yyyy}")
25
ilivewithian

使用する "{0:d}"短い日付形式の場合。試してみてください

 Text='<%# Eval("paid_priviledge_date","{0:d}") %>'

そして

Text='<%# Eval("date_of_joining", "{0:d}") %>'
7
Bala R

バインドされたフィールドで DataFormatString を使用できます。これは、次のように設定できます。

<asp:Label ID="Label8" runat="server" Text='<%# Eval("paid_priviledge_date","{0:d}") %>'/>
1
Chad
Text='<%# (Convert.ToDateTime((Eval("date_of_joining")))).ToShortDateString() %>'

これは私が発見した最も簡単な方法です。

0
SejM...Kar