Создание динамических DataGridViewComboBoxCells

Итак, вот моя ситуация. У меня есть DataGridView, в котором есть два столбца, которые я пытаюсь настроить как DataGridViewComboBoxColumns, называемые «Получено» и «Отложено».

Смысл этих полей со списком состоит в том, чтобы создать раскрывающееся меню, чтобы выбрать, сколько товаров будет получено/заказано, когда моя компания получит отгрузку. Эта программа в основном будет работать на сенсорном экране без мыши или клавиатуры, поэтому я предпочитаю использовать поля со списком, а не просто запрашивать обычный ввод данных пользователем.

Я пытаюсь настроить DataGridView следующим образом:

'Setup of Combo Box Columns
'shipmentData is the name of the DataGridView
Dim receiveCol As New DataGridViewComboBoxColumn()
receiveCol.HeaderText = "Received"
receiveCol.Name = "Received"
shipmentData.Columns.Add(receiveCol)
Dim backorderCol As New DataGridViewComboBoxColumn()
backorderCol.HeaderText = "Backordered"
backorderCol.Name = "Backordered"
shipmentData.Columns.Add(backorderCol)

Приведенный выше код находится в New() Sub для создания формы. Я пытаюсь загрузить данные в ComboBox следующим образом:

Dim rowNum As Integer = 0
For Each op As OrderPart In OrderData.GetPartList()
    If op.AmountOrdered > 0 Then
        shipmentData.Rows.Add()
        shipmentData.Rows(rowNum).Cells("PartNumber").Value = op.PartNumber
        shipmentData.Rows(rowNum).Cells("Description").Value = op.Description
        shipmentData.Rows(rowNUm).Cells("Ordered").Value = op.AmountOrdered
        For it As Integer = 0 To op.AmountOrdered
            CType(shipmentData.Rows(rowNum).Cells("Received"), DataGridViewComboBoxCell).Items.Add(it)
            CType(shipmentData.Rows(rowNum).Cells("Backordered"), DataGridViewComboBoxCell).Items.Add(it)
        Next
        rowNum = rowNum + 1
    End If
Next

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

System.ArgumentException: значение DataGridViewComboBoxCell недопустимо.

Почему я получаю эту ошибку и как ее исправить? Я не могу понять, что я делаю неправильно в своем коде.


person Skitzafreak    schedule 14.01.2019    source источник


Ответы (1)


Хотя я не знаю, почему в ваш Dropbox добавляются возрастающие числа, но если вы собираетесь это сделать, измените свой код на следующий:

For it As Integer = 0 To op.AmountOrdered
    CType(shipmentData.Rows(rowNum).Cells("Received"), DataGridViewComboBoxCell).Items.Add(it.ToString())
    CType(shipmentData.Rows(rowNum).Cells("Backordered"), DataGridViewComboBoxCell).Items.Add(it.ToString())
Next
person Code Pope    schedule 14.01.2019
comment
Большое спасибо. Не могу поверить, что решить мою проблему было так просто ›_‹ - person Skitzafreak; 14.01.2019