我在gridview中有一个标签,我在那里显示发送日期时间的消息,具体取决于消息是今天发送还是更早。如果消息是今天发送的,它应该显示时间,如果它是之前发送的,它会显示日期( DD-MM-YYYY)。 SentDateTime是给出所需dateTime的列。
我试过以下内容:
<asp:Label ID="lblMsgTime" runat="server" Text='<%# Eval("SentDateTime","{0:dd-MM-yyyy}").Equals(DateTime.Now,"{0:dd-MM-yyyy}")? Eval("SentDateTime","{0:HH:mm}"):Eval("SentDateTime","{0:dd-MM-yyyy}") %>' style="color: #FFFFFF"></asp:Label>
但抛出异常
会员&#39; object.Equals(object,object)&#39;无法使用实例引用访问;使用类型名称来限定它
答案 0 :(得分:2)
问题是您忘记在PATH
上致电ToString
:
DateTime.Now
然而这一切都非常复杂。当可以直接比较日期时,无需比较字符串:
.Equals(DateTime.Now.ToString("{0:dd-MM-yyyy}"))
即使这对于标记看起来太过分了。考虑将此逻辑移到函数后面的代码中:
<%# (DateTime)Eval("SentDateTime") == DateTime.Now ? ...
然后像这样称呼它:
protected string GetDateValue(DateTime sentDateTime)
{
if (sentDateTime == DateTime.Now)
{
return sentDateTime.ToString("HH:mm");
}
else
{
return sentDateTime.ToString("dd-MM-yyyy");
}
}