2014-01-11 66 views
0

相當新的C#我需要投入一個值來添加分鐘到一個日期,但它可以爲空。以下是我該怎麼辦:檢查是Eval(「VALUE」)爲空

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

在這裏的錯誤,我得到:

數據綁定: 'System.Data.DataRowView' 不相稱的屬性稱爲:'17/04/2014 13:30: 00' 。

那麼,檢查是否爲假?或者錯誤在別處?

ps:對不好的代碼格式化,我不知道如何讓它變得更好。

+4

Goooood lord ...將表達式拆分爲多個語句並開始調試。這將幫助你更容易地找到問題,你不會問;) – walther

回答

3

嘗試使用的代碼,你需要用日期或字符串「 - 「

<%# Eval("DUREE") == DBNull.Value || Eval("DATE") == DBNull.Value 
    ? " - " 
    : Convert.ToString(Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") %> 

問題在你的代碼,你在DataBinder.Eval傳遞第二個參數字符串日期,但沒有屬性的名稱。

+0

你已經贏得了一天,並保存了我的。 –

+0

..沒問題:) –

+0

2年半後,這個釘爲我。 – nycdan

1

假設'Eval'方法正在以字符串的形式返回一個日期值,這是你正在嘗試做什麼? : Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute) 這可能是您的問題添加分鐘的答案。

但是,您收到的錯誤似乎表明一個不同的問題。您發佈的代碼似乎在代碼後面(?)。 DataBinder.Eval方法通常將用於像Repeater控制一樣的Web控件的aspx。在這種情況下,您必須將第二個參數傳遞給DataBinder.Eval作爲公共財產的名稱。

你可以看看這個爲清楚起見點擊here

你可以做加法分鐘,而在地方ASPX屬性的返回值

+0

問題是'Eval(「DUREE」)'可能會返回DBNull並在投射崩潰... –

+0

如果添加檢查(Eval( 「DUREE」)!= DBNull.Value && Eval(「DATE」)!= DBNull.Value)。但是我不確定在演員陣容中碰撞的問題。 –