2016-08-02 5 views
0

に私は休暇日時ピッカーに戻り、1/1/0001午前12:00:00 C#の

私のクラスでこれを定める
public DateTime? LineCheckSubmitDateTime { set; get; } 

私は私のgridview

enter image description here

を使用してこの変数を初期化する必要があります

しかし、時にはので、ここで私はnullで、この値を残しておく必要がありますが、私はそれを残すとき、それは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; 

ので、2つの質問:

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に最小日付文字列を変換するとそれを比較することになりますです変換された値をキャッシュして、それを2回変換するのではなく条件演算子で使用します。

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

また明示的は、上記の文でDateTime?nullをキャストすることができます。

私はGridViewLineCheckSubmitDateTime制御について確認していない、ここでその値が既にDateTimeオブジェクトである可能性があり、objectの内側に戻りました。あなたも試してみてください:上記のコードでは

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

を、あなたはConvert.ToDateTimeを呼び出す必要はありません。

+0

同じエラーが返される –

+0

@EhsanAkbarは、「DateTime?」の代わりに「DateTime」というコードで間違いを犯しました。コードが変更されました。それはうまくいくはずです。 – Habib

+0

残念ながら、私は同じエラーがありますか?コードを変更しますか? –

関連する問題