В двух словах: у меня есть DataSet с несколькими DataTables внутри, которые связаны через несколько DataRelations. Я создал форму, использующую привязку данных в этом DataSet, и вы могли бы сказать, что это довольно сложно.Сопоставление данных, набор данных с данными и обновление одного DataTable из базы данных
Сценарии следующие: основная цель формы - вставка новой записи. Чтобы он был вставлен, необходимо установить различные отношения родитель-ребенок. Все работает отлично с привязкой данных, но проблема следующая: когда пользователь хочет ввести нового «ребенка» для одного из этих отношений родитель-ребенок, открывается новая форма, он вводит его, yada yada yada, - и это работает. Проблема заключается в том, как я должен вернуть эти новые данные в исходную форму, чтобы они отображались в родительском-дочернем поле со списком?
Один из способов, которым я знаю, - это обновить всю форму; но я ищу решение для обновления только DataTable, содержащего эти данные. Я попытался получить новый DataTable со свежими данными из БД, и слияние его с DataTable в DataSet, но это не работает: «Ребенок строка имеет несколько родителей» исключение:
// basically just a Select * using dataadapter,
// nothing programmatically added
DataTable table = tableModule.GetPlainTable();
existingDataSet.Tables["tableName"].Merge(table);
Эквивалент пример того, что я пытаюсь сделать, - это иметь форму заказа, с помощью команды «Комбобокс клиента». Справа от выпадающего списка появляется кнопка «Добавить», которая открывает новую форму «Добавить клиента». Просто, чтобы упомянуть (возможно, это актуально), внутри БД таблица «Клиенты» относится к таблице «Города», и эти данные также связаны в форме данных в форме заказов ...
EDIT: одно решение, о котором я могу думать, это «вручную» цикл во всем новом DataTable и найти все строки, которые не находятся в исходном DataTable внутри DataSet, но я не уверен, что это сработает либо ...
Любая помощь/предложение/объяснение/толчок в правильном направлении было бы очень полезно :)