Comme le message d'erreur l'indique, la valeur de la cellule est DBNull.Value
et il ne peut pas convertir à partir de cela en ce que vous voulez qu'il soit (dans ce cas, un long
ou un int
). Vous devez vérifier DBNull
avant de convertir/caster le nombre :
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);
Parce que cela ajoute des frais généraux ennuyeux, si vous en faites autant, vous voudrez probablement créer une méthode d'assistance qui le fera pour vous.
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
Alors votre code peut être :
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();