Изменение подключения 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 по прежнему не могу.
