Другой источник данных для DataGridViewComboBoxCell

У меня есть DataTable.

CurrencyId | валюта


0 | доллар США

1 | батов

2 | Евро

5 | Рупия

6 | иена

Я привязал эту таблицу к ячейке DataGridViewCombobox. Пользователь может выбрать одну валюту один раз. Если пользователь сначала выберет "USD" в DataGridViewRow, комбинированный список следующей строки будет без "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 ответ

Имейте копию источника данных, где вы удаляете выбранное значение, которое вы используете в качестве источника данных для отображения.

Подписываться на DataGridView.EditingControlShowing событие, затем получите поле со списком редактирования, как показано ниже, и установите его источник данных в качестве копии источника данных.

Образец кода:

void myDGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        ComboBox comboBox = e.Control as ComboBox;
        if (comboBox != null)
        {
            comboBox.DataSource = displayDataSource;
        }
    }
Другие вопросы по тегам