我对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。
任何人对如何做到这一点都有任何想法?
感谢您的帮助。
答案 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”