Построение отчета на базе Объектов
- compositum
- Сообщения: 252
- Зарегистрирован: 15 янв 2008, 15:12
- Откуда: Санкт-Петербург
Построение отчета на базе Объектов
Подскажите пожалуйста, что я делаю не верно? Посмотрел этот ролик
Создал класс, который помимо свойств имеет коллекцию List, в которой содержатся объекты другого класса.
Однако в Дизайнере стимула получаю только свойства объекта, а коллекции нет. Объекты в составе коллекции в свою очередь содержат помимо свойств коллекцию неких объектов и так 4 уровня вложенности...
Получаю это:
установка ссылки, как показано в демо-ролике, ничего не дает - т.е. что без нее, что с ней - один и тот же результат получаю:
Как правильно поступить в этой ситуации?
Создал класс, который помимо свойств имеет коллекцию List, в которой содержатся объекты другого класса.
Однако в Дизайнере стимула получаю только свойства объекта, а коллекции нет. Объекты в составе коллекции в свою очередь содержат помимо свойств коллекцию неких объектов и так 4 уровня вложенности...
Получаю это:
установка ссылки, как показано в демо-ролике, ничего не дает - т.е. что без нее, что с ней - один и тот же результат получаю:
Как правильно поступить в этой ситуации?
Построение отчета на базе Объектов
Установите, пожалуйста, следующее свойство:
Stimulsoft.Report.StiOptions.Dictionary.BusinessObjects.AllowUseFields = true;
Также Вы можете посмотреть пример BusinessObjects, который поставляется вместе со Stimulsoft Reports.Net.
Спасибо.
Stimulsoft.Report.StiOptions.Dictionary.BusinessObjects.AllowUseFields = true;
Также Вы можете посмотреть пример BusinessObjects, который поставляется вместе со Stimulsoft Reports.Net.
Спасибо.
- compositum
- Сообщения: 252
- Зарегистрирован: 15 янв 2008, 15:12
- Откуда: Санкт-Петербург
Построение отчета на базе Объектов
а где именно нужно поместить этот код? Примеры я смотрел, результаты вижу, но разобраться не смог.Edward писал(а):Установите, пожалуйста, следующее свойство:
Stimulsoft.Report.StiOptions.Dictionary.BusinessObjects.AllowUseFields = true;
Также Вы можете посмотреть пример BusinessObjects, который поставляется вместе со Stimulsoft Reports.Net.
Спасибо.
Построение отчета на базе Объектов
Здравствуйте,
Это статическое поле. Код необходимо выполнить до операции регистрации бизнес-объекта, один раз за время выполнения программы.
Спасибо.
Это статическое поле. Код необходимо выполнить до операции регистрации бизнес-объекта, один раз за время выполнения программы.
Спасибо.
- compositum
- Сообщения: 252
- Зарегистрирован: 15 янв 2008, 15:12
- Откуда: Санкт-Петербург
Построение отчета на базе Объектов
Спасибо, добавил, коллекции появились, но возникла другая проблема: объекты в составе коллекций так же не отображаются...Vital писал(а):Здравствуйте,
Это статическое поле. Код необходимо выполнить до операции регистрации бизнес-объекта, один раз за время выполнения программы.
Спасибо.
Для наглядности проблемы, упростил код:
Код: Выделить всё
class A
{
public string propA1 { get; set; }
public string propA2 { get; set; }
public Bcollection Items1;
public Bcollection Items2;
public A(string a1, string a2)
{
propA1 = a1; propA2 = a2; Items1 = new Bcollection();
Items2 = new Bcollection();
}
}
public class B
{
public string propB1 { get; set; }
public string propB2 { get; set; }
public override string ToString()
{
return propB1 + " " + propB2;
}
}
public class Bcollection
{
List listB;
public Bcollection()
{ listB = new List(); }
public void Add(B b) { listB.Add(b); }
public void Remove(B b) { listB.Remove(b); }
public void RemoveAt(int b) { listB.RemoveAt(b); }
}
Так же интересует такой вопрос: если в классе А или в классе В я создам метод, возвращающий значение, можно ли в отчете создать новое поле и в нем дать ссылку на этот метод, чтобы поле всегда содержало результат, возвращаемый этим методом? Если да, то как это сделать, поскольку методы своих классов я в режиме дизайна отчетов не вижу...
Построение отчета на базе Объектов
Да, это возможно. Для этого создайте вычисляемую колонку и укажите в ней следующее выражение:
(тип объекта)(ИмяИсточникаДанных["Data"]).НазваниеМетода
Спасибо.
(тип объекта)(ИмяИсточникаДанных["Data"]).НазваниеМетода
Спасибо.
- compositum
- Сообщения: 252
- Зарегистрирован: 15 янв 2008, 15:12
- Откуда: Санкт-Петербург
Построение отчета на базе Объектов
а насчет первого вопроса?Edward писал(а):Да, это возможно. Для этого создайте вычисляемую колонку и укажите в ней следующее выражение:
(тип объекта)(ИмяИсточникаДанных["Data"]).НазваниеМетода
Спасибо.
Нет доступа к объектам в составе коллекций (объекты класса В)
Построение отчета на базе Объектов
Возможно для этого нужно наследовать Bcollection от одного из интерфейсов - IList, ICollection, IEnumerable.Нет доступа к объектам в составе коллекций (объекты класса В)
- compositum
- Сообщения: 252
- Зарегистрирован: 15 янв 2008, 15:12
- Откуда: Санкт-Петербург
Построение отчета на базе Объектов
дело в том, что мне нужно использовать свой класс-коллекцию, содержащий только те свойства и методы, что мне нужны, а посему класс нужен именно такой как я (упрощенно) показываю в коде. Наследуя интерфейсы, мне придется реализовывать кучу методов и свойств, которые не должны быть видны (по сути я юзаю именно их, но это скрыто внутри кода).couragic писал(а):Возможно для этого нужно наследовать Bcollection от одного из интерфейсов - IList, ICollection, IEnumerable.Нет доступа к объектам в составе коллекций (объекты класса В)
Построение отчета на базе Объектов
Попробуйте изменить эту строку кода:
public class Bcollection
{
List listB;
следующим образом:
public class Bcollection
{
public List listB;
Также если Вы не хотите отображать определенные элементы Ваших бизнес-объектов, установите, пожалуйста:
1) атрибут [Browsable(false)] для этих объектов.
2) статическое свойство: StiOptions.Dictionary.BusinessObjects.FieldsProcessingType = StiFieldsProcessingType.Browsable
Спасибо.
public class Bcollection
{
List listB;
следующим образом:
public class Bcollection
{
public List listB;
Также если Вы не хотите отображать определенные элементы Ваших бизнес-объектов, установите, пожалуйста:
1) атрибут [Browsable(false)] для этих объектов.
2) статическое свойство: StiOptions.Dictionary.BusinessObjects.FieldsProcessingType = StiFieldsProcessingType.Browsable
Спасибо.