将数据加载到DataGridViewComboBoxColumn VB.NET中

时间:2014-08-22 17:49:15

标签: vb.net datagridview datagridviewcombobox

嗨,我一整天都在撞墙,试图解决这个问题。

我有一个显示SQL查询结果的DataGridView

查询返回3个字段:GROUPNUM,GROUPNAME,COACHING

组字段中只包含字符串并且显示正常,但COACHING字段是单个字符字段,其中包含Y或N.对于该列,我想要一个带有Y或N作为项目的组合框。这是我到目前为止所拥有的。

dtGroups是一个填充了SQL数据适配器的数据表。

            dvGroups = dtGroups.DefaultView

            'Set up datagrid view

            With dgvToPopulate

                .Columns.Clear()

                .AutoGenerateColumns = False
                .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
                .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells

                .DataSource = dtGroups

                With .Columns

                    Dim groupNumColumn, groupNameColumn As New DataGridViewTextBoxColumn

                    With groupNumColumn

                        .DataPropertyName = "GROUPNUM"
                        .HeaderText = "Group Number"
                        .ReadOnly = True

                    End With

                    With groupNameColumn

                        .DataPropertyName = "GROUPNAME"
                        .HeaderText = "Group Name"
                        .ReadOnly = True

                    End With

                    Dim coachingColumn As New DataGridViewComboBoxColumn

                    With coachingColumn

                        .HeaderText = "RN Coaching"

                        .Items.AddRange({"Y", "N"})

                        .DataPropertyName = "COACHING"

                        .DisplayMember = .DataPropertyName
                        .ValueMember = .DisplayMember


                    End With

                    .AddRange({groupNumColumn, groupNameColumn, coachingColumn})

                End With

            End With

网格按我想要的方式设置,它显示所有数据,但所有组合框都没有选中。如何根据存储在该字段中的内容使comboBox中包含Y或N.

任何有关此的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

DisplayMemberValueMember都与DataSource属性相关联。每当您更改其中一个属性时,都会重置数据连接。换句话说:清除物品集合。

以你的例子为例。 String类没有名为COACHING的成员。它具有LengthChars等属性。因此您无法创建绑定。此外,items-collection接受各种对象。

您需要创建并绑定自定义数据源。以下是使用DataTable

的示例
Dim ynTable As New DataTable()

With ynTable
    .Columns.Add("Value", GetType(String))
    .Rows.Add("Y")
    .Rows.Add("N")
    .AcceptChanges()
End With

With coachingColumn
    .HeaderText = "RN Coaching"
    .DataSource = ynTable
    .DataPropertyName = "COACHING"
    .DisplayMember = "Value"
    .ValueMember = "Value"
End With