Como diz a mensagem de erro, o valor da célula é
DBNull.Value
e não pode converter disso para o que você quiser (neste caso, um long
ou um int
). Você precisa verificar se há DBNull
antes de converter/lançar o número: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);
Como isso adiciona uma sobrecarga irritante, se você fizer isso, provavelmente desejará criar um método auxiliar que faça isso por você.
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
Então seu código pode ser:
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();