【发布时间】:2014-08-22 17:49:15
【问题描述】:
嗨,我整天都在用头撞墙试图弄清楚这一点。
我有一个显示 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
网格按照我想要的方式设置,它显示了除了所有组合框之外的所有数据,没有任何选择。如何根据该字段中存储的内容让组合框在其中包含 Y 或 N。
对此的任何帮助将不胜感激。
【问题讨论】:
-
如果是,那么数据库中的 COACHING 类型是什么?如果是布尔值,则“Y”和“N”不是直接转换。考虑一个复选框,而不是一个组合。
-
数据库中的字段类型为char,限制为一个字符。我实际上是在考虑使用复选框。 @Plutonix 知道如何使用复选框来完成此操作吗?
-
听起来 DB 是一个伪布尔值。如果可以的话,我会改变它。
-
我完全同意@Plutonix。将值存储为位。格式化一个值(用于显示)然后解析(用于存储)总是更容易。
-
另一个问题,取决于数据库,是引入其他字符的机会。如果您无法更改数据库,您可以尝试在 SQL 中转换它:类似于
([Coaching]='Y') AS myCoachingfor MS Access
标签: vb.net datagridview datagridviewcombobox