Jak mówi komunikat o błędzie, wartość komórki to DBNull.Value
i nie może przekonwertować z tego na cokolwiek chcesz (w tym przypadku long
lub int
). Musisz sprawdzić DBNull
przed konwersją/przesyłaniem numeru:
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);
Ponieważ dodaje to trochę irytującego obciążenia, jeśli robisz tak dużo, prawdopodobnie będziesz chciał stworzyć metodę pomocniczą, która zrobi to za Ciebie.
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
Wtedy Twój kod może być:
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();