У меня есть DataGridView с двумя DataGridViewComboBoxColumns. Я хочу использовать выбранный элемент в первом столбце, чтобы инициировать повторное заполнение элементов во втором столбце для каждой строки.
Вот код, который у меня есть. «addlInfoParentCat» идентифицирует первый столбец, а currentRow.Cells.Item (1) является DataGridViewComboBoxCell, который я хочу заполнить заново ExtEventAdditionalInfoType - это определенный мной тип, который содержит пары строка / значение.
Private Sub dgvAdditionalInfo_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvAdditionalInfo.CellValueChanged
Dim currentCell As DataGridViewCell
currentCell = Me.dgvAdditionalInfo.CurrentCell
If Not currentCell Is Nothing Then
If currentCell.OwningColumn.DataPropertyName = "addlInfoParentCat" Then
Dim parentTypeID As Integer = currentCell.Value
Dim currentRow As DataGridViewRow = Me.dgvAdditionalInfo.CurrentRow
Dim subtypeCell As DataGridViewComboBoxCell = currentRow.Cells.Item(1)
Dim theChildren As New List(Of ExtEventAdditionalInfoType)
theChildren = Custom_ExtEventAdditionalInfoType.GetChildrenOfThisParentOrderByTypeName(parentTypeID)
subtypeCell.DataSource = Nothing
subtypeCell.DataSource = theChildren
subtypeCell.DisplayMember = "ExtEventAdditionalInfoTypeDescr"
subtypeCell.ValueMember = "ID_ExtEventAdditionalInfoType"
End If
End If
End Sub
По сути, я вижу, что в первый раз переплет отлично работает. Когда я выбираю элемент в первом столбце, он правильно заполняет элементы во втором. Я могу добавить строки в DataGridView и повторить процесс.
Проблема возникает, когда я пытаюсь изменить элемент первого столбца после того, как второй столбец уже связан. Я получаю бесконечную строку диалоговых окон со следующим:
System.ArgumentException: значение DataGridViewComboBoxCell недопустимо.
Есть идеи, почему это происходит? Заранее спасибо!
ОБНОВЛЕНИЕ Предложение CodeByMoonlight, похоже, работает.
Я очищаю значение DataGridViewComboBoxCell перед повторной привязкой:
....
subtypeCell.DataSource = Nothing
subtypeCell.Value = Nothing 'here's the change
subtypeCell.DataSource = theChildren
....