将数据加载到DataGridViewComboBoxColumn VB.NET中
嗨,我一整天都在拼命想办法解决这个问题 我有一个DataGridView,它显示SQL查询的结果 查询返回3个字段:GROUPNUM、GROUPNAME、COACHING “组”字段中只有字符串,并且显示良好,但“指导”字段是一个单字符字段,其中包含Y或N。对于该列,我希望有一个以Y或N作为项目的组合框。这是我到目前为止所拥有的 dtGroups是一个用SQL数据适配器填充的数据表将数据加载到DataGridViewComboBoxColumn VB.NET中,vb.net,datagridview,datagridviewcombobox,Vb.net,Datagridview,Datagridviewcombobox,嗨,我一整天都在拼命想办法解决这个问题 我有一个DataGridView,它显示SQL查询的结果 查询返回3个字段:GROUPNUM、GROUPNAME、COACHING “组”字段中只有字符串,并且显示良好,但“指导”字段是一个单字符字段,其中包含Y或N。对于该列,我希望有一个以Y或N作为项目的组合框。这是我到目前为止所拥有的 dtGroups是一个用SQL数据适配器填充的数据表 dvGroups = dtGroups.DefaultView
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
网格是按照我想要的方式设置的,它显示所有数据,除了所有的组合框都没有选择。如何根据存储在该字段中的内容使组合框中包含Y或N
在此方面的任何帮助都将不胜感激 显示成员和值成员都链接到数据源属性。无论何时更改其中一个属性,数据连接都会重置。换句话说:项目集合被清除 以你为例。
字符串
类没有名为COACHING
的成员。它具有Length
和Chars
等属性,因此无法创建绑定。此外,items集合接受所有类型的对象
您需要创建并绑定自定义数据源。下面是一个使用数据表的示例:
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
如果是,db中的辅导栏是什么类型的?如果是布尔值,则“Y”和“N”不是直接转换。而不是组合,考虑复选框。数据库中的字段类型是char,它仅限于一个字符。我实际上在考虑用复选框代替@钚知道我如何使用复选框来实现这一点吗?听起来DB是一个伪布尔。如果可以的话,我会改变它。我完全同意@puropoix。将值存储为位。格式化一个值(用于显示)然后解析(用于存储)总是比较容易的。另一个问题,取决于数据库,是引入其他字符的可能性。如果您无法将DB:think([Coaching]='Y')更改为MyAchingfor MS Access,您可以尝试在SQL中转换它。非常感谢。这一整天都让我发疯。这很有魅力。另一方面,我想用复选框代替组合框。你知道我怎么能让它识别Y为真支票,N为假支票吗?@slister我很确定我以前做过,但我不记得怎么做了。尝试谷歌parse
(推)和format
(拉)+DataGridViewCell
。如果运气不好,你总是可以问一个新问题;)