不同的DataSource到DataGridViewComboBoxCell

时间:2014-01-20 10:28:48

标签: c# datagridview datagridviewcomboboxcell

我有一个DataTable。

CurrencyId |货币


0 | USD

1 |铢

2 |欧元

5 |卢比

6 |日元

我已将此表绑定到DataGridViewCombobox单元格。用户可以选择一种货币一次。如果用户在第一行DataGridViewRow中选择“USD”,则下一行的组合框将没有“USD”。我能得到它吗?我试过这个。

 private void setCellComboBoxItems(DataGridView dataGrid, int rowIndex, int colIndex,   DataTable itemsToAdd)
  {
      DataGridViewComboBoxCell currencycell = (DataGridViewComboBoxCell)dataGrid.Rows[rowIndex].Cells[colIndex];

      currencycell.DataSource = dtCurrency;
      currencycell.ValueMember = "CurrencyId";
      currencycell.DisplayMember = "CurrencyShortName";
  }

我无法修改DataSource属性。我怎么才能得到它?感谢。

1 个答案:

答案 0 :(得分:0)

拥有数据源的副本,您可以在其中删除用作显示数据源的选定值。

订阅DataGridView.EditingControlShowing事件,然后从编辑控件中获取组合框,如下所示,并将其数据源设置为数据源的副本。

示例代码:

void myDGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        ComboBox comboBox = e.Control as ComboBox;
        if (comboBox != null)
        {
            comboBox.DataSource = displayDataSource;
        }
    }