Ошибка при попытке привязать DataSource к DataGridViewComboBoxCell? - PullRequest
2 голосов
/ 16 сентября 2009

У меня есть 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

....

1 Ответ

2 голосов
/ 16 сентября 2009

Что ж, похоже, как только вы повторно излагаете значение первого комбо, вы лишаете законной силы привязку и источник данных, которые вы использовали для заполнения второго комбо, вызывая все ошибки.

...