Я пытаюсь написать код, который проверяет, является ли ячейка в выбранной строке в DataGridView
пустой / нулевой, прежде чем ячейка будет обновлена значением.Код, который я написал, не работает, так как я получаю сообщение об ошибке:
System.InvalidCastException: объект типа 'System.DBNull' не может быть преобразован в 'System.String'введите
Я пробовал это с этим кодом:
if ((string)dataGridView1.SelectedCells[0].OwningRow.Cells[1].Value == null)
{
try
{
String ConnectionString = @"Data Source=.\SQLEXPRESS01;Initial Catalog=Vagtplan;Integrated Security=True";
SqlConnection myconnection = new SqlConnection(ConnectionString);
myconnection.Open();
DateTime primaryKey = Convert.ToDateTime(dataGridView1.SelectedRows[0].Cells[0].Value);
SqlCommand AddNumbeCommand = myconnection.CreateCommand();
AddNumbeCommand.CommandText = "UPDATE dbo.Vagter SET [ansatID] = @ansatID WHERE [Dato] = @dato";
AddNumbeCommand.Parameters.AddWithValue("@ansatID", SqlDbType.Int).Value = textBox1.Text;
AddNumbeCommand.Parameters.Add("@dato", SqlDbType.DateTime).Value = primaryKey;
AddNumbeCommand.ExecuteNonQuery();
myconnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
MessageBox.Show("The cell is updated.");
}
}
else
{
MessageBox.Show("The cell has already a value.");
}
Ожидаемый результат состоит в том, что когда пользователь выбирает в DataGridView
строку, где ячейка под столбцом ansatID уже имеетvalue, введите значение в textBox1 и нажмите Tilføj ansatID til vagten, чтобы получить сообщение об ошибке: «В ячейке уже есть значение».Если он выберет строку, в которой ячейка под столбцом ansatID пуста, напишите значение в textBox1 и нажмите Tilføj ansatID til vagten, то запрос SQL будет выполнен, и он получит сообщение «Ячейка обновлена».Кроме того, столбец ansatID имеет тип данных "int".Это также показано на следующем рисунке: