Я заполнил сетку данных списком объектов. В этот список добавлен еще один список, который заполняет блок данных. Заполнение все идет хорошо, но когда я хочу изменить значение в datagridcombobox, оно автоматически сбрасывается обратно, прежде чем событие cellvaluechange срабатывает.
Прежде чем использовать объекты в сетке данных, я использовал набор данных со строками и заполнил комбинированный список еще одним элементом данных. Здесь строка в table2 была такой же, как строка в table1 для выпадающего списка. Эта процедура работала нормально, но я заметил, что работа с классами / объектами более удобна, чем работа с таблицами данных.
Класс Activiteit выглядит так:
Public Class Activiteit
Property Id As Integer
Property Omschrijving As String
Property FactuurRegel As String
Public Sub New(id As Integer, omschrijving As String, factuurregel As String)
Me.Id = id
Me.Omschrijving = omschrijving
Me.FactuurRegel = factuurregel
End Sub
Public Overrides Function ToString() As String
Return Me.Omschrijving
End Function
Поле со списком datagridview заполняется следующим образом:
Dim lActiviteiten As New List(Of Activiteit)
lActiviteiten = LoadActiveiten()
Dim dgAct As DataGridViewComboBoxColumn = DataGridUren.Columns(3)
dgAct.DataSource = lActiviteiten
dgAct.DisplayMember = "Omschrijving"
dgAct.ValueMember = "Id"
Я заполняю сетку данных следующим образом:
DataGridUren.AutoGenerateColumns = False
DataGridUren.DataSource = kl.FactuurRegels
Kl.factuurregels строится следующим образом:
Property Id As Integer
Property Medewerker As Medewerker
Property Datum As DateTime
Property Activiteit As Activiteit
Property Omschrijving As String
Property Tijd As Decimal
Property Tarief As Decimal
Property Specificatie As Boolean
Property Factureren As Boolean
Property NietFactureren As Boolean
Property Klant As FactKlant
Property Project As String
Когда я изменяю combobox activiteit, я хочу, чтобы событие cellvaluechanged перехватило новый activiteitid и отправило его в базу данных MySQL. Каким-то образом значение сбрасывается до того, как я получу новый идентификатор.
__ Добавлено 15.01.2019
Я думаю, что проблема в этом, потому что источник данных в datagridview содержит только 1 объект, в то время как список объектов в de datagridviewcombobox содержит больше объектов. При изменении комбинированного списка он не может найти данные в источнике данных.
Возможно ли, что это вызывает проблему, и если да, как я могу ее решить?