Jak říká chybová zpráva, hodnota buňky je DBNull.Value
a nemůže se z toho převést na to, co chcete, aby to bylo (v tomto případě long
nebo int
). Musíte zkontrolovat DBNull
před převodem/vysláním čísla:
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);
Vzhledem k tomu, že to přidává nepříjemné režii, pokud děláte tolik, pravděpodobně budete chtít vytvořit pomocnou metodu, která to udělá za vás.
public static long? getLongFromDB(object value)
{
if (value == DBNull.Value) return null;
return Convert.ToInt64(value);
}
Pak váš kód může být:
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
.GetValueOrDefault();