ASP.NET 3.5 GridView模板字段显示日期如果不是MinValue?

时间:2010-07-29 20:16:06

标签: asp.net gridview templatefield

我对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。

任何人对如何做到这一点都有任何想法?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

使用Project类代码更新我的帖子后,我意识到尝试将if语句集成到TemplateField中似乎很草率。我决定在Project类中添加一个名为StartDateString的属性,该属性包含我想在视图层执行的逻辑。这样我就可以为StartDateString属性创建一个Bound字段:

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

猜猜我是从错误的方向接近问题....

答案 1 :(得分:1)

我意识到这篇文章已经过时了,但我只是遇到了同样的问题(过去已经这样做了,但我忘记了如何解决它)。在其他地方找到解决方案的想法可能对其他寻求相同的人有用。总之....

在您的班级中使用可以为空的DataTime类型。 “约会时间?”而不是“DateTime”