Я использую вот такой метод погрузки данных в 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
Все действия происходят в одном методе
Я искал и находил похожие ошибки, но они не подходили для работы с БД
Решение проблемы было простым
AgeGroup.ValueMember и DataPropertyName должны быть одного типа
Я сам указал на проблему в вопросе, при получении таблицы я получал колонку с типом VARCHAR, а ValueMember, являлся int
Я изменил запрос и получаю теперь заместо agegroup.agegroup это agegroup.IDAgeGroup, который является int
Продвижение своими сайтами как стратегия роста и независимости