Добрый день!
Возникла проблема. Detail таблица формируется пустой, если в master таблице нет ни одной записи.
Связаны они через BindingSource стандартным образом
BindingSource masterSource = new BindingSource()
//создаем список с записями из БД
BindingList<MasterRecord> masterRecords = new BindingList<MasterRecord>(MasterRecord.FindAll());
masterSource.DataSource = masterRecords;
//в свойстве DetailRecords содержиться IList записей дочерней таблицы, указываем это
masterSource.DataMember = "DetailRecords"
//теперь очередь detail таблицы
BindingSource detailSource = new BindingSource()
//указываем в качестве источника данный BindingSource master таблицы
detailSource.DataSource = masterSource
//наконец очередь доходит до датагридов
dgvMaster.DataSource = masterSource;
dgvDetail.DataSource = detailSource;
Все работает отлично, если в обеих таблицах есть хотя бы по одной записи. В случае если записи нет, датагрид master таблицы позволяет вносить новые данные, а датагрид дочерней таблицы оказывается пустым. Теперь, даже если добавить запись в master таблицу, он все равно будет оставаться пустым.
Как я понимаю, это из за того, что коллекция DetailRecords в объектах MasterRecord не типизированная. Но сделать ее типизированной — это отдельная песня (я использую ORM Castle ActiveRecord для доступа к БД, а он не умеет работать с коллекциями BindingList и List)
Как вариант, можно в пустую таблицу программно вносить первую запись во время инициализации BindingSource'ов. Но решение, согласитесь, не очень элегантное =(
Ничего умнее придумать пока не получается =( Буду благодарен за подсказку.