DataGridViewComboBoxCell в несвязанном элементе управления DataGridView WinForm - PullRequest
0 голосов
/ 19 октября 2010

Я новичок в элементе управления 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   
---------------------------

Почему?

1 Ответ

0 голосов
/ 19 октября 2010

enter code here Не добавляйте объект StatusCode в коллекцию Items, как показано здесь:

 CurrentCell.Items.Add(StatusCode)

Добавьте строку и посмотрите, работает ли она

CurrentCell.Items.Add (StatusCode.ToString)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...