检查是否为Eval(“VALUE”)为空

时间:2014-01-11 15:06:11

标签: c# date casting dbnull

C#的新手我需要转换一个值来为日期添加分钟,但它可以为null。这是我的方式:

if(Eval("DUREE") != DBNull.Value)
{
    DataBinder.Eval(Container.DataItem,
          Convert.ToString(Convert.ToDateTime(Eval("DATE")).
                     AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") 
}
else
{
    " - "
}

这是我得到的错误:

  

DataBinding:'System.Data.DataRowView'不兼容名为:'17 / 04/2014 13:30:00'的属性。

那么,检查是否错误?或者错误在其他地方?

ps:对于糟糕的代码格式化,很抱歉,我不知道如何做得更好。

2 个答案:

答案 0 :(得分:3)

尝试在需要带日期字符串或“ - ”

的地方使用aspx中的代码
<%# Eval("DUREE") == DBNull.Value || Eval("DATE") == DBNull.Value
    ? " - "
    : Convert.ToString(Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") %>

代码中的问题是DataBinder.Eval中的第二个参数字符串包含日期而不是属性名称。

答案 1 :(得分:1)

假设'Eval'方法以字符串的形式返回日期值,这是你要做的吗? : Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute) 这可能是您添加分钟的问题的答案。

但是,您获得的错误似乎表明存在其他问题。您发布的代码似乎在代码后面(?)。 DataBinder.Eval方法通常在aspx中用于Web控件,如Repeater控件。在这种情况下,您必须将第二个参数作为公共属性的名称传递给DataBinder.Eval

为了清晰起见,您可以点击here

进行检查

您可以在返回属性值

时添加分钟