Удаление элемента из BindingList не обновляет DataGridViewComboBoxCell

У меня есть DataGridView, где есть ячейка, которая является DataGridViewComboCell. Каждая DataGridViewComboCell привязана к уникальной копии BindingList. Когда я удаляю элемент из списка привязок, поля со списком удаляют запись, которую я удалил из списка привязок.
Однако, если выбрано это значение, оно остается выбранным элементом в ячейке.

Я попытался выполнить datagridview.refresh(), но это все равно не помогло. Он вызывается из пункта меню панели инструментов

  // _contractLists is List<BindingList<String>> which is the datasource for a datagridviewcombobox

List<String> removedList = new List<string>();
_contractSelForm.ShowDialog();
_contractSelForm.GetandClearRemovedContracts(ref removedList);

foreach (BindingList<String> contractList in _contractLists)
{
     // remove deleted favorites
    foreach (string contract_name in removedList)
    {
         contractList.Remove(contract_name);
    }
}  

dataGridView1.Refresh();
dataGridView1.EndEdit();          

person JonF    schedule 03.01.2012    source источник
comment
Вы перемещаете и / или изменяете привязку в правильном случае ..? Вы можете вставить код, который вы используете ..? также datagridview.Bind() или привязка звучит как что-то, на что нужно посмотреть.. просто предположение, не видя вашего кода   -  person MethodMan    schedule 04.01.2012
comment
Можете ли вы показать, как вы привязываете BindingLists к столбцу поля со списком? DataGridView1 находится в виртуальном режиме?   -  person Kimberly    schedule 04.01.2012


Ответы (1)


Пара вещей, на которые стоит обратить внимание/посмотреть:

1) Вам не нужно вызывать EndEdit после обновления. Если его необходимо вызвать, вы должны вызвать его перед обновлением.

2) Если ваши поля со списком имеют DropDownStyle DropDown, то это ожидаемое поведение.

Из MSDN документация:

Если вы установите для свойства DropDownStyle значение DropDown, вы можете ввести любое значение в редактируемую область ComboBox.

Чтобы изменить это, либо измените DropDownStyle на DropDownList, либо вручную очистите значение в коде после удаления элементов.

person competent_tech    schedule 04.01.2012