Установка значения инициализированной DataGridViewComboBoxColumnCell в VB.net - PullRequest
0 голосов
/ 08 января 2020

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

DirectCast(DataGridView1.Rows(i).Cells("Key Field 1 cmb"), DataGridViewComboBoxCell).Value = CStr(row("keyfield1"))
DirectCast(DataGridView1.Rows(i).Cells("Key Field 2 cmb"), DataGridViewComboBoxCell).Value = CStr(row("keyfield2"))
DirectCast(DataGridView1.Rows(i).Cells("Key Field 3 cmb"), DataGridViewComboBoxCell).Value = CStr(row("keyfield3"))

Она правильно устанавливает .value поля, но не устанавливает значение в раскрывающемся списке, поэтому значение не может быть видно. У меня есть обработчик data_error, и он не запускается, поэтому это происходит не из-за неправильного типа данных, и если я выберу значение из выпадающего списка, даже значение, которое предполагается загрузить как, оно изменит .value, и это правильно сохраняет в базу данных, но я не могу найти способ установить для выбранного элемента значение, которое ему должно быть.

Полный блок кода находится здесь:

If dt.Rows.Count > 0 Then
            For Each row As DataRow In dt.Rows
                If CStr(row("RATETYPE")).ToUpper() = "HEADER" + RateType Then 
                    handleHeaderRow(row)
                ElseIf CStr(row("RATETYPE")).ToUpper() = RateType Then 
                    DataGridView1.Rows.Add()
                    DataGridView1.Rows(i).Cells("cuid").Value = CStr(row("cuid"))
                    DataGridView1.Rows(i).Cells("Key Field 1 text").Value = CStr(row("keyfield1"))
                    DataGridView1.Rows(i).Cells("Key Field 2 text").Value = CStr(row("keyfield2"))
                    DataGridView1.Rows(i).Cells("Key Field 3 text").Value = CStr(row("keyfield3"))
                    DirectCast(DataGridView1.Rows(i).Cells("Key Field 1 cmb"), DataGridViewComboBoxCell).Value = CStr(row("keyfield1"))
                    DirectCast(DataGridView1.Rows(i).Cells("Key Field 2 cmb"), DataGridViewComboBoxCell).Value = CStr(row("keyfield2"))
                    DirectCast(DataGridView1.Rows(i).Cells("Key Field 3 cmb"), DataGridViewComboBoxCell).Value = CStr(row("keyfield3"))
                    DataGridView1.Rows(i).Cells("Rate 1").Value = CDbl(row("rate1")).ToString("F2")
                    DataGridView1.Rows(i).Cells("Rate 2").Value = CDbl(row("rate2")).ToString("F2")
                    DataGridView1.Rows(i).Cells("Rate 3").Value = CDbl(row("rate3")).ToString("F2")
                    DataGridView1.Rows(i).Cells("Rate 4").Value = CDbl(row("rate4")).ToString("F2")
                    DataGridView1.Rows(i).Cells("Rate 5").Value = CDbl(row("rate5")).ToString("F2")
                    i += 1
                End If
            Next row
        End If
...