我有一个带有组合框控件的数据网格控件。以下是示例代码:
Dim cbCell As DataGridViewComboBoxCell
...
n = myGridView.RowCount - 1
For i = 0 to n
cbCell = Me.myGridView.Rows(i).Cells(6)
cbCell.DataSource = ' data source varies depending on rows
cbCell.DisplayMember = "name"
cbCell.ValueMember = "name"
Next
我遇到的问题是组合框始终显示为空值(空字符串),除非我单击组合框并选择要显示的项目。
我需要的是将第一项(下拉列表)设置为每行的默认值。由于组合框的数据源不同,因此,显示的默认项可能不同。
答案 0 :(得分:1)
您可以将单元格的文本更改为指定的字符串吗?
cbCell.text = egCell.items(1)
答案 1 :(得分:0)
我终于找到了解决问题的解决方案。让我先解释一下我的问题。此“组合框”控件未绑定到其数据网格的数据源的任何属性。这就是为什么我需要在表单加载事件中的代码中定义其数据源,如问题中所述。 “组合框”实际上是DataGridViewComboBoxCell的一个实例,它没有选定的索引属性。我找不到一种方法来获取指定的“组合框”的第一项的值。
解决方案是将DataGridViewComboBoxCell转换或转换为DataRowView。以下是我的示例代码:
Private Sub WorkOrderList_CellFormatting(sender As Object,
e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles
WorkOrderList.CellFormatting
Dim dgvc As DataGridViewComboBoxCell
dgvc = Me.MyDataGridList(e.ColumnIndex, e.RowIndex)
....
Me.MyDataGridList(e.ColumnIndex, e.RowIndex).Value = CType(dgvc.Items(0), DataRowView).Item(0).ToString()
....
End Sub
请注意,如果我直接将dvvc.Items(0)分配给datagrid的控件的值,我只将类类型名称作为字符串。 DataRowView的Item(0)的字符串值是组合框中第一个项目的文本。这就是我想要的。
我希望这个答案可以为类似案例中的其他人提供一些帮助。