Както се казва в съобщението за грешка, стойността на клетката е 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();