2016-08-02 47 views
0

我定義這個在我的課休假日期時間選擇器返回1/1/0001 12:00:00 AM在C#

public DateTime? LineCheckSubmitDateTime { set; get; } 

我需要用我的gridview

enter image description here

初始化這個變量

但有時我需要離開這個值爲空,但是當我離開它它返回1/1/0001 12:00:00 AM

所以這裏是我的代碼:

newObj.LineCheckSubmitDateTime = (Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime"))==DateTime.Parse("1/1/0001 12:00:00 AM")) ? Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime")):null; 

所以兩個問題:

1:此代碼返回此錯誤:

Severity Code Description Project File Line 
Error CS0173 Type of conditional expression cannot be determined because there is no implicit conversion between 'DateTime' and '<null>' 

2:你有更好的解決辦法?

回答

2

的錯誤是因爲你必須顯式轉換條件運算符的操作數的至少一個DateTime?

一個更好的方式來做到這將是它與DateTime.MinValue比較,而不是最小日期字符串轉換爲DateTime,並緩存轉換後的值,然後在條件運算符中使用它,而不是將其轉換兩次。

var tempDateConverted = Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime")); 
newObj.LineCheckSubmitDateTime = tempDateConverted == DateTime.MinValue ? 
            null : (DateTime?) tempDateConverted; 

您也可以明確在上面的語句投nullDateTime?

我不知道關於GridViewLineCheckSubmitDateTime控制,這裏是一個可能性,它的價值已經是DateTime對象,返回object內。您也可以嘗試:

object obj = gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime"); 
newObj.LineCheckSubmitDateTime = (DateTime?) obj; 

與上面的代碼,你不必叫Convert.ToDateTime

+0

再次出現同樣的錯誤 –

+0

@EhsanAkbar,在代碼中犯了一個錯誤,而不是'DateTime?'我有'DateTime'。代碼現在被修改。應該沒問題。 – Habib

+0

哈比不幸,我有同樣的錯誤,你改變代碼? –