Похоже, что у вас проблема с доступом к значению в ячейке Cells[9] объекта DataGridViewRow. Ошибка "Ссылка на объект не указывает на экземпляр объекта" обычно возникает, когда пытаетесь обратиться к объекту, который не был инициализирован.
Для исправления этой проблемы вам нужно убедиться, что в ячейке с индексом 9 всегда будет корректное значение типа RowState, не равное null. Прежде чем обращаться к значению ячейки, вам следует проверить ее на null. Можно сделать это так:
if (dataGridView1.Rows[index].Cells[9].Value != null)
{
var rowState = (RowState)dataGridView1.Rows[index].Cells[9].Value;
// Ваш текущий код обработки rowState
}
Также убедитесь, что у вас в коде есть определение перечисления RowState, и что ваш DataGridView имеет колонку, содержащую значения RowState.
Если вы уверены, что все колонки и их значения корректны, и ошибка все равно возникает, возможно, проблема связана с другим местом вашего кода. Дополнительно рекомендуется использовать отладчик, чтобы проанализировать значения переменных во время выполнения программы и выявить источник ошибки.
{
dataBase.openConnection();
for(int index = 0; index < dataGridView1.Rows.Count; index++)
{
var rowState = (RowState)dataGridView1.Rows[index].Cells[9].Value;
if (rowState == RowState.Existed)
continue;
if (rowState == RowState.Deleted)
{
var id = Convert.ToInt32(dataGridView1.Rows[index].Cells[0].Value);
var deleteQuery = $"delete from iphones where id = {id}";
var command = new SqlCommand(deleteQuery, dataBase.getConnection());
command.ExecuteNonQuery();
}
if (rowState == RowState.Modified)
{
var id = dataGridView1.Rows[index].Cells[0].Value.ToString();
var type = dataGridView1.Rows[index].Cells[1].Value.ToString();
var count = dataGridView1.Rows[index].Cells[2].Value.ToString();
var postavka = dataGridView1.Rows[index].Cells[3].Value.ToString();
var price = dataGridView1.Rows[index].Cells[4].Value.ToString();
var identity_number = dataGridView1.Rows[index].Cells[5].Value.ToString();
var camera = dataGridView1.Rows[index].Cells[6].Value.ToString();
var screen_size = dataGridView1.Rows[index].Cells[7].Value.ToString();
var battery = dataGridView1.Rows[index].Cells[8].Value.ToString();
var changeQuery = $"update iphones set type_of = '{type}', count_of = '{count}', postavka = '{postavka}', price = '{price}', identity_number = '{identity_number}', camera = '{camera}', screen_size = '{screen_size}', battery = '{battery}' where id = '{id}'";
var command = new SqlCommand(changeQuery, dataBase.getConnection());
command.ExecuteNonQuery();
}
}
dataBase.closeConnection();
}
Я сделал кнопку сохранить при нажатии на которую должны сохранять изменения в базе данных MS SQL, я делал все по видео ролику https://www.youtube.com/watch?v=JBUFcMNvEUo , но почему то при нажатии на кнопку сохранить вылазит ошибка Ссылка на объект не указывает на экземпляр объекта. и выделяется строчка var rowState = (RowState)dataGridView1.Rows[index].Cells[9].Value; Помогите пожалуйста решить эту проблему мне надо сдать курсач, можно было бы даже в дискорд кто сможет заранее спасибо.