Другой источник данных для 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;
}
}