Using iReport v3.7.6 and Jasper, I have a request to create a table where the first column acts to section/categorize the questions and answers displayed in the rest of the table. Example of requested output:
**EDIT:** For those of you not able to view the image, it is a 3-column table containing fields "Context", "Question", and "Answer". Each set of Question and Answer belongs to a single Context, which acts as a category for the set, and Context can act as a category for multiple sets of Question and Answer. The request is that it look something like this:
| Context1 | Question1 | Answer1 |
| | Question2 | Answer2 |
| | Question3 | Answer3 |
| | Question4 | Answer4 |
| Context2 | Question5 | Answer5 |
| | Question6 | Answer6 |
I know I can set iReport to not print repeated values, which solves part of my issue of not printing the Context on each line, but the second part of my problem is placing a cell border around the entire Context field so that it looks like the example above, that is, it looks like a dynamically expanding field that covers N number of rows. If I place a border around Context in the Details band of a report then I get the border for ever row in the table, resulting in a number of empty cells in the Context column. Is this kind of formatting possible using iReport 3.7.6? Would it be possible to group on the "Context" field and somehow place a border around the entire group?
Since the quantity of questions per Context category is known it would be possible to use flags in my dataset and conditionally style around the Context fields (e.g. flag set to "top" for first record in group and "last" for last record in group and style a frame's borders to show a top or bottom border according to flags), but that seems likes an awfully messy way of handling the issue. Plus, that bandage would break as soon as questions were dropped/added.
Another thought was creating a subreport that generated each Context individually, placing borders around the entire subreport, and combining the results in a master report's Detail band, but again that seems like a complex solution to an easy problem.
Problem solved. I created a group on the context field, told the Context field not to print repeated values, placed a right and left border on the Context field in the Details band, overlayed a static text field with a top border over top of the Context field in the Details band and told it to only print when the group count == 1, and then I added a horizontal line to the column footer to act as the bottom border of the column. Convoluted, but it works.