Wie die Fehlermeldung sagt, ist der Wert der Zelle DBNull.Value
und es kann es nicht in das umwandeln, was Sie wollen (in diesem Fall ein long
oder ein int
). Sie müssen nach DBNull
suchen vor dem Konvertieren/Casting der Nummer:
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);
Da dies etwas lästigen Overhead hinzufügt, möchten Sie wahrscheinlich eine Hilfsmethode erstellen, die dies für Sie erledigt, wenn Sie so viel tun.
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
Dann kann Ihr Code sein:
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();