Som fejlmeddelelsen siger, er værdien af cellen DBNull.Value
og det kan ikke konvertere fra det til hvad du vil have det til (i dette tilfælde en long
eller en int
). Du skal tjekke efter DBNull
før du konverterer/caster nummeret:
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);
Fordi dette tilføjer nogle irriterende overhead, hvis du gør så meget, vil du sandsynligvis lave en hjælpemetode, der gør det for dig.
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
Så kan din kode være:
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();