0

sqldatasource を使用してデータベースに接続されている gridview コントロールを使用しています。このグリッドビューから直接更新と削除を行うことができます。

日付フィールドを編集してコンテンツを削除すると、データベースに null を書き込む代わりに、データベースの値が 1900-01-01 に変更され、データベースに手動で null を書き込むと、その上で gridview の編集ボタンを使用します他のセルの行、以下はエラーです。

オブジェクトを DBNull から他の型にキャストすることはできません。

4

1 に答える 1

0

最初のチェック データベース列は NULL 可能ですか?

使用しているasp.netフレームワークのバージョンについて言及していません。

.net フレームワーク >= 3.5 の場合、null 許容データ型を使用できます。つまり、バインドは日時で行う必要がありますか? 日時の代わりにフィールド。あなたが言及したエラーは、null 値を datetime 型の変数にバインドしようとしていることが原因です。日時を使用しますか?エラー「オブジェクトは DBNull から他の型にキャストできません」は解決されます。または、itemdatabound イベントで次の操作を実行できます。

yourTextBox.value = string.empty
if(((DataRow)e.Item.DataItem)["YourDateField"] != dbnull.value)
{
   yourTextBox.value = ((DataRowView)e.Item.DataItem)["YourDateField"] .toString();
}

データバインディング/データ保存のために何をしているのかについては言及していません。データ保存コードで、次のことを行います。

datetime? saveDate = null;
if(!string.isnullorempty( yourTextBox.value))
    {
     saveDate = converto.datetime(  yourTextBox.value);


     }

//Use the saveDate for the saving.
于 2013-02-21T09:46:20.000 に答える