Reporting - Table and Cross-Tab Enhancements (v18.1)

Oliver's Blog
18 April 2018

Pivot Grid - Improved Cross-Tab Report Rendering

When you create a cross-tab report that contains a lot of data and spans multiple pages horizontally, the pivot grid displays row headers on the first document page only. This is inconvenient while viewing such a document since you need to navigate to the first page when you want to determine what row data the report shows:

Old cross-tab rendering

This issue is due to a limitation of our report generation engine. Customers have asked us to improve the situation for many years and we finished this feature implementation in v18.1:

Improved cross-tab rendering

We extended the PivotGridOptionsPrint class with the PrintRowAreaOnEveryPage property to allow you to manage this behavior for the PivotGridControl and the Reporting XRPivotGrid control. Do not forget to set theXtraReport.VerticalContentSplitting property to Smart to render the best possible document appearance.

XRTable — Improved Hidden Column Processing

A common case for reports representing invoices is that a Discount column must be shown conditionally (e.g. only if a client has discounts available, or depending on an application setting), and column sizes must be recalculated taking presence or absence of the column into account. In the past, we didn’t have a good solution for this scenario, so that results were often ugly:

Showing Discount column Discount column hidden

For v18.1, we extended the XRTable class with the new property ProcessHiddenCellMode, which defines how empty space is redistributed when table cells are hidden.

ProcessHiddenCellMode options

The ProcessHiddenCellMode property is in effect for cells that are hidden using one of the following approaches:

  • The Visible property of a cell is set to False at design time using the Visual Studio Properties window
  • An expression is specified for the Visible property of a cell
  • The Visible property of a cell is set to false at runtime (e.g. by handling the event XRControl.BeforePrint).
  • In an XRControl.BeforePrint event handler, the Cancel property on the event args is set to true.

The following modes are available for processing hidden cells:

  • StretchPreviousCell: The cell located to the left of the hidden cell is stretched to occupy the available space. If the hidden cell is the first in the row, the next cell to the right is stretched.


  • StretchNextCell: The cell located to the right of the hidden cell is stretched to occupy the available space. If the hidden cell is the last in the row, the previous cell to the left is stretched.


  • ResizeCellsEqually: All visible cells are resized to equally share the space that a hidden cell frees up.


  • ResizeCellsProportionally: All visible cells are resized to proportionally share the space that a hidden cell frees up, based on their individual widths compared to the table width.


  • DecreaseTableWidth: The table width is decreased and visible cells are shifted close the gap left by the hidden cell. Cell sizes don’t change.


  • LeaveEmptySpace (the default mode, corresponding to previous behavior): Empty space remains where the cell is hidden, other cells are not affected.

Free DevExpress Products - Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We'll be happy to follow-up.
No Comments

Please login or register to post comments.