エラーメッセージに示されているように、セルの値はDBNull.Value
です。 そして、それからあなたが望むもの(この場合はlong
)に変換することはできません またはint
)。 DBNull
を確認する必要があります 数値を変換/キャストする前:
Int64 id_riga = 0;
object value = (sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value;
if(value != DBNull.Value)
id_riga = Convert.ToInt64(value);
これにより煩わしいオーバーヘッドが追加されるため、これだけ行う場合は、それを実行するヘルパーメソッドを作成することをお勧めします。
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
次に、コードは次のようになります。
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();