пустой master/detail datagridview
От: Ash81  
Дата: 08.09.07 11:50
Оценка:
Добрый день!

Возникла проблема. 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'ов. Но решение, согласитесь, не очень элегантное =(

Ничего умнее придумать пока не получается =( Буду благодарен за подсказку.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.