Som felmeddelandet säger är cellens värde DBNull.Value
och det kan inte konvertera från det till vad du vill att det ska vara (i det här fallet en long
eller en int
). Du måste leta efter DBNull
innan du konverterar/castar numret:
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);
Eftersom detta lägger till en del irriterande omkostnader, om du gör så här mycket kommer du förmodligen att vilja skapa en hjälpmetod som gör det åt dig.
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
Då kan din kod vara:
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();