Я новичок в элементе управления DataFridView WinForm и просто не люблю привязку данных. Раньше я использовал Spread OCX 100 лет назад и нашел его дружественным. Теперь я столкнулся с проблемой, попробуйте сделать что-то простое:
У меня есть сетка с двумя столбцами:
1) Имя
2) Статус
Я хочу просмотреть мою коллекцию «ChinaVisas» и отобразить имя заявителя и статус его заявки. Я хочу сделать выпадающий столбец состояния, который может позволить пользователю изменить значение, выбрав другой элемент в раскрывающемся списке.
Вот что я делаю. У меня такое ощущение, что это не тот способ привязки данных, который большинство людей будет кодировать, но здесь вы идете:
Private Sub PopulateGridVisa()
grdVisa.Rows.Add(_Order.ChinaVisas.Count)
For r As Integer = 0 To _Order.ChinaVisas.Count - 1
Dim CurrentChinaVisa As ChinaVisa = _Order.ChinaVisas(r)
For c As Integer = 0 To grdVisa.Columns.Count - 1
Select Case c
Case 0
Dim CurrentCell As DataGridViewCell = grdVisa.Rows(r).Cells(c)
CurrentCell.Value = CurrentChinaVisa.SortName
Case 1
Dim CurrentCell As DataGridViewComboBoxCell = CType(grdVisa.Rows(r).Cells(c), DataGridViewComboBoxCell)
For Each StatusCode As StatusCode In _frmMain.ApplicationStartup.StatusCodes
If StatusCode.StatusCodeId >= StatusCodeEnum.WaitingToReceive Then
CurrentCell.Items.Add(StatusCode)
End If
If StatusCode.StatusCodeId = CurrentChinaVisa.StatusCodeId Then
CurrentCell.Value = StatusCode
End If
Next
End Select
Next
Next
End Sub
Кажется, это работает, но когда пользователь выбирает новое значение состояния из раскрывающегося списка, возвращается следующая ошибка:
---------------------------
DataGridView Default Error Dialog
---------------------------
The following exception occurred in the DataGridView:
System.ArgumentException: DataGridViewComboBoxCell value is not valid.
To replace this default dialog please handle the DataError event.
---------------------------
OK
---------------------------
Почему?