2013-02-20 66 views
0

我已经搜索了整天,我认为这将是一个简单的概念,但这是我的思考。选择更改时显示ValueMember

我有与使用的DataTable作为其DataSource如下组合框柱DataGridView控件:从组合框中

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事件)

到目前为止,这么好,但是当我从combox中选择一个条目时,ValueMember显示在组合中而不是DisplayMember中。有人可以解释我出错的地方吗?

+0

这不应该是相关的,但为什么你在这里有两个不同的gv名称:'dgvICS213'和'dgv' – AbZy 2013-02-20 23:33:46

+0

这是同一个网格 - 我修改了这个帖子。 – 2013-02-20 23:58:55

回答

0

我面临同样的问题,并通过将数据库中的字段从byte更改为int16来解决此问题。