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:对于糟糕的代码格式化,很抱歉,我不知道如何做得更好。
答案 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
进行检查您可以在返回属性值
时添加分钟