Như thông báo lỗi cho biết, giá trị của ô là DBNull.Value
và nó không thể chuyển đổi từ đó sang bất cứ thứ gì bạn muốn (trong trường hợp này là long
hoặc một int
). Bạn cần kiểm tra DBNull
trước khi chuyển đổi / truyền số:
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);
Bởi vì điều này thêm một số chi phí khó chịu, nếu bạn làm điều này nhiều có thể bạn sẽ muốn tạo một phương thức trợ giúp thực hiện điều đó cho bạn.
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
Sau đó, mã của bạn có thể là:
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();