2010-04-07 2 views
0

Я хочу напечатать таблицу в формате pdf. Мне нужно использовать два javabean datasource для заполнения данных в таблице. Таким образом, я использовал два подзаголовка параллельно, чтобы сопоставить данные. Проблема, с которой я столкнулся, - это то, что я не мог организовать второй контент субрепортажа, соответствующий первому вложенному отчету. То есть, если ширина поля в первом подзаголовке велика, тогда содержимое в второй отчет не будет согласовывать правильно, соответствующий первый subreport.The ниже образца даст хорошее представление о проблемеКак решить эту проблему в JasperReport?

Моего ожидаемом выходным

 SubReport1      SubReport2 

    S.No  Value     S.No  Value 

    1  value from first   1   value from second bean 
      java bean value 
      bean 

    2  value from first bean 2   value from second bean 

результата, который я получаю

 SubReport1     SubReport2 

    S.No  Value    S.No  Value 

    1  value from first  1   value from second bean 
     java bean value  2   value from second bean  
      bean 

    2  value from first bean 

Просьба помочь мне разобраться с этой проблемой.

+0

Название вопроса не совсем понятно. Кто-нибудь должен помочь? (У меня недостаточно репутации.) –

ответ

0

Subreports - это как аргументы функции. Они оцениваются до вызова функции и не знают друг о друге. Есть два решения вашей проблемы:

  1. удалить оба подотчетов и делают данные в основном докладе
  2. добавить некоторые непечатаемые символы в короче из двух значений, предполагается быть оказаны в том же строка
+0

Привет, Борис, спасибо за ваш интерес. Фактически я использую JavaBeanDatasource, и мой компонент возвращает два ArrayList.so для заполнения этих значений ArryList, которые я использовал Subreport. Я надеюсь, что мы не сможем напрямую заполнить ArrayList внутри mainreport direct.We can not использовать nonprinting char также потому, что иногда второе значение subreport может быть большим, чем первое. Возможно ли другое. – Kumar

1

Поскольку @Boris предложил первую вещь удалить подзаголовок.

Поскольку вы используете BeanDatasource, тогда вы можете поместить все бизнес и логику в свой код и предоставить отчет готовый список.

Сделайте новый объект, позвоните нам ReportRow, не используйте это название курса :).

public class ReportRow{ 
    int sNumber1; 
    int sNumber2: 
    String value1: 
    String value2: 
    //setters and getters 
} 

Теперь создайте новый ArrayList<ReportRow> и передать в качестве источника данных.

HTH.

+0

кажется, что кумар не имеет доступа к источнику, который испускает эти два массива –

Смежные вопросы