У меня есть 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