Businessobjectdatasource
1 неправильно выводится тип данных для Nullable типов (например для поля DateTime? в сойствах тип Nullable'1)
2 для вложенных коллекций List<T> помимо таблицы появляется поле с тем же названием но типом List'1
2 для вложенных коллекций List<T> помимо таблицы появляется поле с тем же названием но типом List'1
Комментарии
2) это необходимо для правильной работы. Это поле имеет Enabled = false и в дереве данных не отображается.
Есть объект создаем экземпляры
Human h = new Human("Human1", 123);
Human fH = new Human("pHuman1", 158);
h.parent = fH;
h добавляем в список List<Human> peoples и передаем peoples в отчет.
Так вот, если в отчете положить на бэнд поле [Peoples.parent.parent], то дизайнер выдает ошибку Text1: error CS0246: The type or namespace 'Human" could not be found....
Это происходит, как я понимаю, из-за того что ссылка на этот объект равна null (у fH parent не присвоен).
Но если сначала построить отчет, а потом на бэнд добавить это поле, то ошибка уже не появляется и значение поля при построении отчета равно 0, при этом поле parent в соваре данных в дизайнере имеет тип Int32 .
Откуда выползает тип поля Int32 и нельзя ли сразу задавать значение по умолчанию без предваритьельного построения?
1. В дизайнере тип поля parent определяется как Human (в DataType стоит Human).
2. После запуска отчета на выполнение и закрытия окна превью DataType поля parent пустое.
3. если после того как поле DataType стало пустым, поместить на бэнд например [Peoples.parent.Name] и опять построить отчет и закрфть превью, то
3.1 Прежде чем вернуться в дизайнер программа подвисает на 1-3 секунды.
3.2 После возвращения в дизайнер поле DataType имеет тип Int32.
Про 1-3 секунды, не заметил такого. Но у меня достаточно быстрая (E8600) машина.
угу, вот если с ним работать возникают ошибки. У класса Human, например, перегружаем ToString(), чтоб возвращал имя экземпляра. После передачи данных и запуска дизайнера кладем на бэнд поля [Peoples.parent] и [Peoples.parent.parent] (второе равно null), вылетает ошибка
FastReport.Net v1.0.189
Object reference not set to an instance of an object.
at tffUfY8do511hfsyvy.F9PPoLSYHL61puNRYU.UKvVX40D3E(String , Type )
at qLiXubkjoAMppm0K3A.AQtcXf1QmwPPtufvvt.8gyF538Ux(String )
at qLiXubkjoAMppm0K3A.AQtcXf1QmwPPtufvvt.8UGTxCls0(String , Base , Boolean )
at qLiXubkjoAMppm0K3A.AQtcXf1QmwPPtufvvt.fb03afKFG()
at FastReport.Report.XBN3QFtVj()
at FastReport.Report.Prepare(Boolean append)
at FastReport.Report.Prepare()
at i3SVixdYaMXZa7crmRM.O0cYfUdDREtqaIB9T2M.rukKJDUF4()
убираем второе поле, строим отчет, закрываем превью, опять кладем второе поле. Ошибки уже нет, поле имеет значение 0 и тип Int32.
Есть ли возможность
1. Сделать так, чтоб поля со значением null, например, сразу бы устанавливались как Int32 со значением по умолчанию?
2. Расширить список DataType`ов самого FastReport. С помощью dll`ки, содержащей новый(новые) тип, например.
2) это исправил, посторонние типы теперь восстанавливаются корректно.
2. Спасибо.