为什么这对我不起作用?它总是返回TRUE

本文关键字:返回 TRUE 不起作用 为什么 | 更新日期: 2023-09-27 18:22:24

我一直在努力弄清楚为什么这似乎对其他人有效,但对我无效。

我有一些数据,在Hours2列中,显然有一些单元格为NULL,有些单元格的小时数如下

'9:00 a.m. - 6:00 p.m.'
NULL
NULL
'9:00 a.m. - 6:00 p.m.'
'9:00 a.m. - 5:00 p.m.'
NULL
NULL
NULL

然而,我不知道如何做看起来应该是一个简单的if语句和一些内联代码的事情。我已经使用了

<%# Eval("Hours2") %>来获取值,这显示得很好。。。

在第一种情况下,如果Hours2是否为NULL,我想显示一个或另一个文本位。(这是我小时一数据的标签文本,如果有小时2,那么周五有不同的时间)

<%# Eval("Hours2") != DBNull.Value ? "mon - thurs" : "mon - fri" %>

这是基于Stack其他人对其他事情的回答,听起来应该有效,但它总是正确的。。。

如果我只是想用True或False来使事物可见或不可见,那也是一样的。。。

Visible ='<%# Eval("Hours2") != DBNull.Value %>'

我显然错过了一些东西。。。!!!

为什么这对我不起作用?它总是返回TRUE

将逻辑移动到codehind:

<%# GetString(Eval("Hours2")) %>

然后使用调试器找出实际传递的内容。

public string GetString(object hours){
 ...
}

您可以尝试以不同的方式进行检查。。。我可以这样做。

<%#(String.IsNullOrEmpty(Eval("Hours2").ToString()) ? "mon-thurs" : "mon-fri")%>

试试这个:

Visible ='<%# Eval("Hours2").ToString() != "" %>'

Visible ='<%# !String.IsNullOrEmpty(Eval("Hours2").ToString()) %>'

如何从SQL中获取它。意味着使用LINQ或调用SP?您可以在查询中使用isnull(Hours2,0)Hours2或isnull(Hours2,'')Hours2。它会像这样为你工作。

<%# Eval("Hours2") != 0 ? "mon - thurs" : "mon - fri" %>

<%# Eval("Hours2") != '' ? "mon - thurs" : "mon - fri" %>

<%# !String.IsNullOrEmpty(Eval("Hours2").ToString()) ? "mon - thurs" : "mon - fri" %>