Я боролся с очень похожей проблемой на DataGridView
с DataGridViewComboBoxColumn
.
DataGridView
привязан к DataSet
Параметры раскрывающейся ячейки DataGridViewComboBoxCell
должны заполняться в соответствии со значением другой ячейки в той же строке.
Заполняю ли я ComboBox
Элементы ячеек вручную (свойство DataGridViewComboBoxCell.Items
) или использую DataBinding (свойство DataGridViewComboBoxCell.DataSource
), прямо перед вводом обработчика события CellFormatting
значения верны, но как только выполняется шаги в обработчике, myComboBoxCell.Items.Count
понижается до нуля.
Если значение ячейки отличается от DBNull.Value
, это вызывает неприятное «System.ArgumentException: DataGridViewComboBoxCell значение недопустимо». (Потому что myComboBoxCell.Value
не содержится в myComboBoxCell.Items
)
Мое "решение" - это скорее обходной путь :
Я обрабатываю событие DataGridView.DataError
и заполняю соответствующий DataGridComboBoxCell
источник данных в этом обработчике. Затем отмените исключение (e.ThrowException = False
).
На мой взгляд, он слишком грязный, но работает.