Изменение подключения BindingSource.Source в процессе выполнения программы

Есть Таблица Documents связанная с тремя другими таблицами Table1, Table2, Table3. Связи один к многим. Главными для Documents являются Table1, Table2, Table3. Каждая Table находится на своем TabControl. Таблица Documents представлена на каждом из TabControl.

Для того, чтобы иметь возможность создавать и редактировать записи в Documents с сохранением связей, я хочу изменять свойства (BindingSource)bndDocument.DataSource и bndDocument.DataMember при переключении TabControl. Получаю исключение

System.ArgumentException: "Строка сортировки содержит свойство, которое отсутствует в списке IBindingList.

Помогите понять где ошибка.

введите сюда описание изображения

/// bndDocument (BindingSource)
private void SetTabGrid()
{
    if (bndDocument.IsSorted && bndDocument.SupportsSorting)
        bndDocument.RemoveSort();
    bndDocument.RemoveFilter();
    bndDocument.DataSource = null;
            
    switch (tabControlMain.SelectedIndex)
    {   
        case 1: 
            bndDocument.DataSource = bndTable1;
            bndDocument.DataMember = "Table1Documents";
            bndDocument.Sort = "DataDoc";

            break;
        case 2:
            bndDocument.DataSource = bndTable2;
            bndDocument.DataMember = "Table2Documents";
            bndDocument.Sort = "DataDoc";

            break;
        case 3:
            bndDocument.DataSource = bndTable3;
            bndDocument.DataMember = "Table3Documents";
            bndDocument.Sort = "DataDoc";

            break;              
    }         
}

Обнаружил одну закономерность. Когда записей в главной таблице нет (Table*.count = 0) при переключении происходит ошибка. Если записи есть, то всё работает нормально.

((BindingSource)DB_Cmd.bndDocument.DataSource).Count == 0

Теперь я могу прервать выполнение метода до получения ошибки, но переопределить BindingSource.DataSource по прежнему не могу.


Ответы (0 шт):