Задвоение бэндов

Stimulsoft Ultimate discussion
Lavr
Posts: 14
Joined: Thu Aug 26, 2010 4:19 am
Location: Ukraine

Задвоение бэндов

Post by Lavr »

Добрый день.

У нас возникла проблема при построении отчета содержащего два DataBand - происходит задвоение бэндов.
Бэнды выводятся в следующем порядке: первый, второй, первый, второй (кода должны только - первый, второй).
Данные берутся из соответствующих свойств (коллекций IList) бизнес объекта (представлен в виде класса-контейнера OrderContainer)

Code: Select all

class OrderContainer
{
     public string Name{get;set;}
     
     public IList Specification{ get;protected set; }
     public IList SpecialRequirements { get; protected set; }
     ....
}

class OrderSpecification
{
     public Quantity Thickness { get; set; }
     public Quantity Width { get; set; }
     ...
}

class Quantity
{
     public decimal Value{get;set;}
     ...
}

class SpecialRequirement 
{
     public virtual string Value { get; set; }
     ...
}
Загружаем и инициализируем отчет следующим образом

Code: Select all

var rep = new StiReport();
rep.Load(info.FullPath);
rep.GlobalizationManager.Culture = new System.Globalization.CultureInfo("en-US");

//в данном случае container будет типа OrderContainer
var container = ReportDataContainerFactory.Get(info.Name);
rep.RegBusinessObject("DataContainers", container.GetType().Name, container);

rep.Design();
Сам шаблон отчета состоит из ReportTitle band в котором выводятся основные данные из OrderContainer, такие как Name.
Затем отображаются данные из Specification следующим образом:
1) PositionsHeader (Header band), заголовок для списка Specification.
2) dataPositions (Data band), у которого в качестве бизнес объекта задан OrderContainer.Specification.
3) PositionsFooter (Footer band).

Затем отображаются данные из SpecialRequirements следующим образом:
1) SpecialRequirementsHeader (Header band), заголовок для списка SpecialRequirements.
2) dataSpecRec (Data band), у которого в качестве бизнес объекта задан OrderContainer.SpecialRequirements.

Проблема в том что секции для отображения Specification и SpecialRequirements отображаются 2 раза -
[Specification],
[SpecialRequirements],
[Specification],
[SpecialRequirements].

Пожалуйста подскажите как можно решить данную проблему?

Также подскажите как можно локализовать отчет (как задать локализацию в шаблоне нашел, но как выставить необходимую локаль при его формировании нет)?
Ivan
Posts: 960
Joined: Thu Aug 10, 2006 1:37 am

Задвоение бэндов

Post by Ivan »

Здравствуйте.
Lavr wrote:У нас возникла проблема при построении отчета содержащего два DataBand - происходит задвоение бэндов.
Бэнды выводятся в следующем порядке: первый, второй, первый, второй (кода должны только - первый, второй).
Данные берутся из соответствующих свойств (коллекций IList) бизнес объекта (представлен в виде класса-контейнера OrderContainer)
Мы делали некоторые доработки в этой области на прошлой неделе.
Пожалуйста попробуйте проверить ваш отчет на новом билде от 14-Dec-2010 когда он появится.
Если проблема останется, пожалуйста вышлите нам простое тестовое приложение, которое воспроизводит указанную проблему.
Lavr wrote:Также подскажите как можно локализовать отчет (как задать локализацию в шаблоне нашел, но как выставить необходимую локаль при его формировании нет)?
Посмотрите пожалуйста пример GlobalizedReport из стандартной поставки нашего продукта.

Спасибо.
Lavr
Posts: 14
Joined: Thu Aug 26, 2010 4:19 am
Location: Ukraine

Задвоение бэндов

Post by Lavr »

Пожалуйста попробуйте проверить ваш отчет на новом билде от 14-Dec-2010 когда он появится.
Ок. Спасибо. Ждем новый билд.
Посмотрите пожалуйста пример GlobalizedReport из стандартной поставки нашего продукта.
Я смотрел. Уже не помню что не понравилось или не получилось.
Правильно ли я понимаю алгоритм работы локализации:
1. В шаблоне отчета добавляются нужные языки
2. В шаблоне отчета заменяются значения текстовых полей под каждый язык
3. При формировании отчета ему указывается какую локаль использовать
?
Lavr
Posts: 14
Joined: Thu Aug 26, 2010 4:19 am
Location: Ukraine

Задвоение бэндов

Post by Lavr »

Обновился до нового билда (2011.1.902.0), но он не работает. Выдает:

Code: Select all

ReflectionTypeLoadException

"Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information."

LoaderExceptions "Could not load file or assembly 'Stimulsoft.Report, Version=2010.3.900.0, Culture=neutral, PublicKeyToken=ebe6666cba19647a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":"Stimulsoft.Report, Version=2010.3.900.0, Culture=neutral, PublicKeyToken=ebe6666cba19647a"
Версия 2010.3.900 была удалена перед установкой новой. Подскажите когда будет фикс?
Ivan
Posts: 960
Joined: Thu Aug 10, 2006 1:37 am

Задвоение бэндов

Post by Ivan »

Здравствуйте.

Пожалуйста проверьте, что вы удалили из вашего проекта все ссылки на старые dll и добавили ссылки на новые.
Также необходимо перекомпилировать с новыми dll все библиотеки, в которых есть ссылки на наш продукт.
Если вы сохраняете отчеты в dll, то отчеты тоже должны быть перекомпилированы.

Спасибо.
Lavr
Posts: 14
Joined: Thu Aug 26, 2010 4:19 am
Location: Ukraine

Задвоение бэндов

Post by Lavr »

Да. Действительно забыл пересобрать dll-ки отчетов. Но проблему это, к сожалению, не решило.
Завтра подготовлю пример.
Andrew
Posts: 4105
Joined: Fri Jun 09, 2006 3:58 am

Задвоение бэндов

Post by Andrew »

Здравствуйте.

Да, подготовьте, пожалуйста, пример.

Спасибо.
Lavr
Posts: 14
Joined: Thu Aug 26, 2010 4:19 am
Location: Ukraine

Задвоение бэндов

Post by Lavr »

Добрый день.
В прилагаемом архиве обещаный пример. Проект создавался в Visual Studio 2010.
После создания экземпляра класса StiReport, регистрируется бизнес объект.
В случае если создается новый отчет то производится синхронизация бизнес объектов.
Путь к файлу отчета задается в app.config
Кнопка "Create report" используется для создания нового шаблона отчета, производит синхронизацию бизнес объектов и показывает дизайнер для дальнейшего конструирования формы отчета.
Вам необходимо будет воспользоваться кнопкой "View/Design report", которая заполнит и откроет существующий отчет в дизайнере с зарегистрированными тестовыми данными.
Lavr
Posts: 14
Joined: Thu Aug 26, 2010 4:19 am
Location: Ukraine

Задвоение бэндов

Post by Lavr »

Any news?
Ivan
Posts: 960
Joined: Thu Aug 10, 2006 1:37 am

Задвоение бэндов

Post by Ivan »

Здравствуйте.

Определили причину проблемы.
Проблема возникает, если на двух датабэндах раскручиваются два объекта-списка одного уровня вложенности (в вашем случае OrderContainer.Specification и OrderContainer.SpecialRequirements).
На данный момент вопрос в процессе решения, пересматриваем логику связывания бэндов.

Как вариант временного решения, вы можете расположить один из датабэндов (вместе с заголовками/подвалами) на панели внутри дополнительного бэнда с Count=1.
Например, добавить DataBand1, на нём положить Panel1, и перенести SpecificationHeaderBand, SpecificationDataBand и SpecificationFooterBand на Panel1.
При этом логика построения отчета изменяется, и задвоения бэндов не происходит.

Спасибо.
Attachments
744.OrderReport 2.zip
(3.04 KiB) Downloaded 297 times
Post Reply