vb.net Значение ячейки в datagridviewcombobox изменяется до запуска события cellvaluechanged - PullRequest
0 голосов
/ 12 января 2019

Я заполнил сетку данных списком объектов. В этот список добавлен еще один список, который заполняет блок данных. Заполнение все идет хорошо, но когда я хочу изменить значение в 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 содержит больше объектов. При изменении комбинированного списка он не может найти данные в источнике данных. Возможно ли, что это вызывает проблему, и если да, как я могу ее решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...