Datagrid显示组合框控件的空值

时间:2013-04-04 19:27:15

标签: vb.net

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

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

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

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

2 个答案:

答案 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)的字符串值是组合框中第一个项目的文本。这就是我想要的。

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