FormatException для DataGridViewComboCell

190
02 февраля 2020, 13:40

Я использую вот такой метод погрузки данных в comboBox

AgeGroup.DataSource = children.newTable("SELECT * FROM agegroup");
AgeGroup.ValueMember = "ID";
AgeGroup.DisplayMember = "agegroup";

где, children экземпляр класса Table - это мой класс для работы с таблицей
newTable - метод этого класса, который получает таблицу по запросу

Таблица называется Agegroup и имеет 2 поля: ID INT и Agegroup VARCHAR

Это так же справедливо для ComboBoxColumn
Но нам нужна еще целая таблица и что бы значение ComboBoxColumn тоже менялось соответственно

Подключаем таблицу:

dtChildren.DataSource = children.newTable("SELECT agegroup.agegroup, 
    childrens.SecondName, childrens.FistName, childrens.FatherName " +
    "FROM childrens " +
    "INNER JOIN agegroup ON childrens.IDAgeGroup = agegroup.ID " +
    "WHERE childrens.IDGroup = '" + dtAttendance.CurrentRow.Cells[1].Value + "'");

Все работает таблица есть, но comboBox не подставляет значение, нужно установить DataPropertyName для ComboBoxColumn
Заметьте, что первое поле которое мы получаем это - agegroup, это поле мы будем использовать в DataPropertyName, чтобы значение ComboBox менялось в зависимости от записи
Подключаю DataPropertyName
И все на этом начинается ошибка
При попытке получить таблицу, мы получаем исключение от DataGridView: System.FormatException: недопустимое значение DataGridViewComboCell
Все действия происходят в одном методе
Я искал и находил похожие ошибки, но они не подходили для работы с БД

Answer 1

Решение проблемы было простым
AgeGroup.ValueMember и DataPropertyName должны быть одного типа
Я сам указал на проблему в вопросе, при получении таблицы я получал колонку с типом VARCHAR, а ValueMember, являлся int

Я изменил запрос и получаю теперь заместо agegroup.agegroup это agegroup.IDAgeGroup, который является int

READ ALSO
Не могу понять почему через некоторое время не работает контекстное меню

Не могу понять почему через некоторое время не работает контекстное меню

Написал приложение, которое мониторит папку, если файл есть, то копирует его в другую папку, но с нужным именемЭто в кратце

181
Как проверить является ли символ числом?

Как проверить является ли символ числом?

Как можно проверить,является ли определенный символ в строке числом? Не смог найти никакой рабочей информации, Parse не работает

210
Под значимые переменные в классе память выделяется в куче?

Под значимые переменные в классе память выделяется в куче?

Класс - это ссылочный тип, а если в нем есть значимые переменные, то под них память выделяется в куче, как под ссылочный (поправьте, если ошибаюсь)

174