将数据源中的对象绑定到datagridview组合框VB​​.Net

时间:2019-01-10 07:26:28

标签: vb.net datagridview combobox datasource

我在VB.Net代码中遇到问题。

我有一个具有以下属性的对象factuurregel:

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

我正在使用的另一个对象是activiteit:

Property Id As Integer
Property Omschrijving As String
Property FactuurRegel As String

在表单中,我有一个数据网格,在其中使用以下代码:

Dim lActiviteiten As New List(Of Activiteit)
        lActiviteiten = LoadActiveiten()
        Dim dgAct As DataGridViewComboBoxColumn = DataGridUren.Columns(3)
        dgAct.DataSource = lActiviteiten

AND

loadmwlist()
        Dim dgMW As DataGridViewComboBoxColumn = DataGridUren.Columns(1)
        With dgMW
            .ValueMember = dtmw.Columns("ID").ToString
            .DisplayMember = dtmw.Columns("Naam").ToString
            .DataSource = dtmw.Copy
        End With

loadmwlist填充表格的地方。

使用这两个代码,数据网格中的组合框将正确填充。

问题是,当我将对象factuurregel设置为数据源时,仅在medewerker组合框中显示正确的值。 为了完整起见,对象medewerker的构建如下:

Property Id As Integer
    Property Naam As String

当我使用表作为组合框的数据源时,为什么数据源是正确的,但是当我使用对象列表时却不是正确的?

1 个答案:

答案 0 :(得分:0)

jmcilhinney说:

  

为什么要这样做:.ValueMember = dtmw.Columns(“ ID”)。ToString   而不是:.ValueMember =“ ID”?您在哪里设置   dgAct的DisplayMember和ValueMember?我不确定你知道吗   这些属性实际上是做什么的,所以您可能应该继续阅读   他们。 –

之后我添加了

       dgAct.DisplayMember = "Omschrijving"
    dgAct.ValueMember = "Id"

代码现在可以正常工作。