我整天都在寻找我认为是一个简单的概念,但这就是我思考的结果。
我有一个带有 ComboBox 列的 DataGridView 控件,该列使用 DataTable 作为其 DataSource,如下所示:
With CType(dgvICS213.Columns(GridCol("CostBasis").Name), DataGridViewComboBoxColumn)
.DataSource = Common.ExecuteQuery("SELECT ID, CostBasis FROM ICS213CostBasis", CommandType.Text)
.DisplayMember = "CostBasis"
.ValueMember = "ID"
End With
数据库表存储组合框中的值 (ID)。
我使用 DefaultValuesNeeded 事件将新值设置为 DisplayMember (CostBasis) 值:
Dim dgv As DataGridView = sender
CType(e.Row.Cells(GridCol("CostBasis").Index), DataGridViewComboBoxCell).Value = CType(dgv.Columns(GridCol("CostBasis").Index), DataGridViewComboBoxColumn).Items(0).Item(1)
我还使用 DisplayMember 值填充数据库查询中的现有行(处理 DataError 事件)
到目前为止,一切都很好,但是当我从组合框中选择一个条目时,ValueMember 将显示在组合中,而不是 DisplayMember。有人可以解释我哪里出错了。