Создание динамических DataGridViewComboBoxCells - PullRequest
0 голосов
/ 14 января 2019

Итак, вот моя ситуация. У меня есть 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() для создания формы. Я пытаюсь загрузить данные в комбинированные списки следующим образом:

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

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

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

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

1 Ответ

0 голосов
/ 14 января 2019

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...