0

我有一个带有组合框控件的数据网格控件。以下是示例代码:

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

我遇到的问题是组合框始终显示为空值(空字符串),除非我单击组合框并选择要显示的项目。

我需要将第一项(下拉列表的)设置为每一行的默认值。由于组合框的数据源不同,因此显示的默认项可能不同。

4

2 回答 2

1

您可以将单元格的文本更改为指定的字符串吗?

   cbCell.text = egCell.items(1) 
于 2013-04-04T19:39:48.737 回答
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) 的字符串值是组合框中第一项的文本。这就是我想要的。

我希望这个答案可以为类似情况的其他人提供一些帮助。

于 2013-04-07T20:16:53.597 回答