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 中似乎很草率。我决定向 Project 类添加一个名为 StartDateString 的属性,其中包含我想在视图层执行的逻辑。这样我就可以为 StartDateString 属性创建一个绑定字段:

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

猜猜我是从错误的方向解决问题的......

于 2010-07-29T21:32:14.957 回答
1

我意识到这篇文章很旧,但我也遇到了同样的问题(过去曾这样做过,但我忘记了如何解决它)。在别处找到的解决方案提出的想法可能对寻求相同的其他人有用。无论如何....

在您的类中使用可为空的 DataTime 类型。“约会时间?” 而不是“日期时间”

于 2011-05-22T13:57:16.337 回答