Каков наилучший способ обработки определенного значения ячейки в DataGridView, чтобы сделать его доступным для других методов? - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть элемент управления 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.

...