У меня есть элемент управления DataGridView
. Я передаю данные через SQL-запрос, и я хочу иметь возможность обновлять свои записи позже.Прямо сейчас, когда я дважды щелкаю строку, ее содержимое копируется в несколько текстовых полей с помощью следующего кода:
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
TextBoxFirstName.Text = row.Cells[1].Value.ToString();
TextBoxLastName.Text = row.Cells[2].Value.ToString();
TextBoxAddress.Text = row.Cells[3].Value.ToString();
TextBoxPhone.Text = row.Cells[4].Value.ToString();
TextBoxEmail.Text = row.Cells[5].Value.ToString();
TextBoxNotes.Text = row.Cells[6].Value.ToString();
Мои проблемы связаны с тем, чтобы обновить правильную запись, мне нужно обработать идентификатор (первичный ключ)), но я не хочу показывать его конечному пользователю в другом элементе управления TextBox.Я решил обновить запись, используя SQL-оператор UPDATE
, используя текст в текстовых окнах и кнопку, которая активируется, когда конечный пользователь дважды щелкает строку, а ее содержимое копируется в текстовые поля, но я не совсем уверенкакой лучший способ справиться с ситуацией.Я боюсь, что код, который я использую, следующий: пользователь может выбрать другую строку (таким образом, сделать недействительным Id данных клиента, загруженных в TextBoxes), а затем обновить неверную строку:
Customer customer = new Customer()
{
Id = Convert.ToUInt16(dataGridView1.CurrentRow.Cells[0].Value.ToString()),
FirstName = TextBoxFirstName.Text,
LastName = TextBoxLastName.Text,
Address = TextBoxAddress.Text,
Phone = TextBoxPhone.Text,
Email = TextBoxEmail.Text,
Notes = TextBoxNotes.Text
};
Database.UpdateCustomer(customer);
Я знаю, что мог бы использовать поле, и, дважды щелкнув по строке, я мог назначить полю содержимое ячейки Id
, но я не уверен, что это самый чистый способ сделать это;в качестве альтернативы я мог бы также иметь скрытый TextBox, обрабатывающий значение Id
.