Получение данных из выбранной строки в DataGridView, C# WinForms - PullRequest
0 голосов
/ 28 марта 2020

Как прочитать всю строку и сохранить ее в переменной? Я знаю, какой тип хранится там (пользовательский тип сотрудника).

Я пытался сделать это вручную.

private async void AddEmployee()
        {
            var context = new NorthwindContext();
            int selectedRowCount = EmpMgmtDataGridView.Rows.GetRowCount(DataGridViewElementStates.Selected);
            if (selectedRowCount > 0)
            {
                for (int i = 0; i < selectedRowCount; i++)
                {
                    var employeeToAdd = new Employees();
                    employeeToAdd.FirstName = EmpMgmtDataGridView[1, i].ToString();
                    employeeToAdd.LastName = EmpMgmtDataGridView[2, i].ToString();
                    await context.AddAsync(employeeToAdd);
                    await context.SaveChangesAsync();
                }
            }
        }

Но это заканчивается на

SqlException: String or binary data would be truncated.
The statement has been terminated.

в SaveChanges. Я пытаюсь отправить его в базу данных, но я знаю, как это сделать, я просто не могу получить его из DataGridView.

Редактировать

Произведено обновление, но оно заканчивается с идентичной ошибкой .

private async void AddEmployee()
        {
            var context = new NorthwindContext();
            int selectedRowCount = EmpMgmtDataGridView.Rows.GetRowCount(DataGridViewElementStates.Selected);
            var rows = EmpMgmtDataGridView.SelectedRows;
            if (selectedRowCount > 0)
            {
                for (int i = 0; i < selectedRowCount; i++)
                {
                    var employeeToAdd = new Employees();
                    employeeToAdd.LastName = rows[i].Cells[1].ToString();
                    employeeToAdd.FirstName = rows[i].Cells[2].ToString();
                    await context.AddAsync(employeeToAdd);
                    await context.SaveChangesAsync();
                }
            }
        }

1 Ответ

0 голосов
/ 28 марта 2020

Убедитесь, что вы действительно получаете значение ячейки, а не сам объект ячейки:

employeeToAdd.LastName = rows[i].Cells[1].Value.ToString();
employeeToAdd.FirstName = rows[i].Cells[2].Value.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...