Как проверить, является ли ячейка в выбранной строке в dataGridView пустой / нулевой, используя C #? - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь написать код, который проверяет, является ли ячейка в выбранной строке в dataGridView пустой / нулевой, прежде чем ячейка будет обновлена ​​значением. Код, который я написал, работает, но независимо от того, есть ли значение в ячейке в выбранной строке или нет, данные не обновляются. Я пытался с этим кодом:

 if (dataGridView1.SelectedRows[0].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.Add("@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("There is already a value in the cell.");
            }

Как я уже упоминал ранее, реальный результат заключается в том, что независимо от того, есть ли значение в ячейке в выбранной строке или нет, данные не обновляются. Ожидаемый результат состоит в том, что, когда пользователь выбирает в dataGrdView строку, в которой ячейка под столбцом ansatID уже имеет значение, записывает значение в textBox1 и нажимает «Tilføj ansatID til vagten», он получает ошибку: «Уже есть значение в ячейке. " Если он выберет строку, в которой ячейка под столбцом ansatID пуста, напишите значение в textBox1 и нажмите Tilføj ansatID til vagten, то запрос SQL будет выполнен, и он получит сообщение «Ячейка обновлена». Это также показано на следующем рисунке: enter image description here

1 Ответ

0 голосов
/ 06 мая 2019

С этим условием вы можете получить доступ к этому конкретному столбцу в выбранной строке, пропустили часть OwningRow, и вам нужно сравнить ее с пустой строкой и нулевым значением на всякий случай:

(string)dataGridView1.SelectedCells[0].OwningRow.Cells[1].Value == "" ||
(string)dataGridView1.SelectedCells[0].OwningRow.Cells[1].Value == null

SelectedCells [0].OwningRow означает первую выбранную строку, Cells [1] означает ANSATID.

Должен любить winforms и его ясность.

Редактировать: Как кто-то указал, вам нужно вручную обновить данныев сетке данных в winforms удобно иметь функцию типа UpdateDatagrid () и вызывать ее каждый раз, когда вы изменяете БД.

...