嗨,我一整天都在撞墙,试图解决这个问题。
我有一个显示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.
任何有关此的帮助将不胜感激。
答案 0 :(得分:1)
DisplayMember
和ValueMember
都与DataSource
属性相关联。每当您更改其中一个属性时,都会重置数据连接。换句话说:清除物品集合。
以你的例子为例。 String
类没有名为COACHING
的成员。它具有Length
和Chars
等属性。因此您无法创建绑定。此外,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