0

ASP.NET にはかなり単純な問題があります。テンプレート フィールドを含むグリッド ビューがあります。テンプレート フィールドにラベルがあります。日時の値が最小値でない場合 (つまり、日時フィールドが設定されていない場合)、バインドされた列で指定された日付にラベル テキスト プロパティを設定しようとしています。どうすればいいのか本当にわかりません。私が達成しようとしていることをより明確にするために、以下で試したコードをいくつか示しました。

        <asp:TemplateField HeaderText="Start Date">
            <ItemTemplate>
                <asp:Label ID="startDateLabel" runat="server"
                    Text='<%# if (Eval("StartDate") == DateTime.MinValue) { "None" } else { Eval("StartDate") } %>'>
                </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

要求されたオブジェクト データ ソースのコードは次のとおりです。

<asp:ObjectDataSource ID="projectDataSource" runat="server" 
    SelectMethod="GetProjects" TypeName="Lemur.Services.Impl.ProjectService">
</asp:ObjectDataSource>

オブジェクト データ ソースから返されるクラスは次のとおりです。

public class Project
{
    #region Private Fields

    private Client _client;

    #endregion

    #region Public Properties

    public Guid ID { get; set; }
    public string Name { get; set; }
    public string Abbreviation { get; set; }
    public string Description { get; set; }
    public Guid ClientID { get; set; }
    public Client Client
    {
        get
        {
            if (_client == null)
            {
                _client = new Client();
            }

            return _client;
        }
        set
        {
            _client = value;
        }
    }
    public ProjectStatus ProjectStatus { get; set; }
    public Employee ProjectManager { get; set; }
    public Guid ProjectManagerID { get; set; }
    public bool Active { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }

    #endregion

    #region Overrides

    public override string ToString()
    {
        return Name;
    }

    #endregion
}

取得しようとしているフィールドは StartDate です。

これを達成する方法について誰にもアイデアがありますか?

助けてくれてありがとう。

4

2 に答える 2

1

投稿を Project クラスのコードで更新した後、if ステートメントを TemplateField に統合しようとすると、ずさんに見えることに気付きました。ビュー レイヤーで実行するロジックを含む、StartDateString という Project クラスにプロパティを追加することにしました。このようにして、StartDateString プロパティに Bound フィールドを作成するだけです。

    public string StartDateString
    {
        get
        {
            if (StartDate == DateTime.MinValue)
            {
                return "";
            }
            else
            {
                return StartDate.ToString("dd/MM/yyyy");
            }
        }
    }

私は間違った方向から問題に取り組んでいたと思います....

于 2010-07-29T21:32:14.957 に答える
1

この投稿が古いことは承知していますが、同じ問題が発生したばかりです(過去にそうしましたが、解決方法を忘れていました)。他の場所で見つけた解決策は、同じことを求めている他の人に役立つかもしれません。とにかく....

クラスで null 許容の DataTime 型を使用します。"日付時刻?" 「日時」の代わりに

于 2011-05-22T13:57:16.337 に答える