2.23 Tablix

Applies to RDL 2008/01, RDL 2010/01, and RDL 2016/01

The Tablix element defines a tablix, which is a layout grid that consists of columns and rows that can optionally be filtered, sorted, grouped, nested, and repeated.

The tablix incorporates the collective functionality of the List, Table, and Matrix that were defined in versions of RDL prior to RDL 2008/01.

An element of type Tablix MUST NOT be specified within a page header or a page footer.

There are two collections of TablixMember elements. TablixMember elements that have a TablixRowHierarchy ancestor in the tablix are called tablix row members. TablixMember elements that have a TablixColumnHierarchy ancestor in the tablix are called tablix column members.

The quantity of TablixColumn elements within the tablix MUST equal the quantity of tablix column members that do not have a TablixMember element descendant. The quantity of TablixColumn elements within the tablix MUST equal the quantity of TablixCell elements within the tablix.

The value of the Tablix.LayoutDirection element changes the effect that the value of the Tablix.GroupsBeforeRowHeaders element will have. This is described under Tablix.GroupsBeforeRowHeaders.

Columns of tablix row headers MUST be laid out before columns that are defined by TablixColumn elements, and they MUST be considered in conjunction with the Tablix.GroupsBeforeRowHeaders element.

The Tablix.TablixCorner element MUST be specified if the following conditions are true:

  • The tablix has a TablixRowHierarchy element child that has a TablixHeader element descendant.

  • The tablix has a TablixColumnHierarchy element child that has a TablixHeader element descendant.

If either the TablixRowHierarchy element or the TablixColumnHierarchy element does not have a TablixHeader element descendant, the Tablix element MUST NOT have a child TablixCorner element.

If a TablixCornerRow element is specified, the quantity of descendant TablixCornerCell elements in the tablix MUST equal the quantity of unique cumulative widths for each tablix row member of the tablix. "Cumulative width" for a tablix row member is defined as the sum of the values of all TablixHeader.Size elements that are descendants of the tablix row member.

If a TablixCorner element is specified, the quantity of descendant TablixCornerRow elements in the tablix MUST equal the quantity of unique cumulative heights for each tablix column member of the tablix. "Cumulative height" for a tablix column member is defined as the sum of the values of all TablixHeader.Size elements that are descendants of the tablix column member.

Borders and any background images that are specified under Tablix.Style can be repeated on vertical and horizontal page breaks by using the Tablix.OmitBorderOnPageBreak element.

The informative reference Understanding Tablix Data Region Areas [MSDN-UTDRA] is useful to understand the nomenclature of tablix components.

The following are the parent elements, attribute, and child elements of the Tablix element.

Parent elements

ReportItems

CellContents

CustomReportItem.AltReportItem

Attributes

Tablix.Name

Child elements

Tablix.ActionInfo

Tablix.Bookmark

Tablix.CustomProperties

Tablix.DataElementName

Tablix.DataElementOutput

Tablix.DataSetName

Tablix.DocumentMapLabel

Tablix.Filters

Tablix.FixedColumnHeaders

Tablix.FixedRowHeaders

Tablix.GroupsBeforeRowHeaders

Tablix.Height

Tablix.KeepTogether

Tablix.LayoutDirection

Tablix.Left

Tablix.NoRowsMessage

Tablix.OmitBorderOnPageBreak

Tablix.PageBreak

Tablix.PageName

Tablix.RepeatColumnHeaders

Tablix.RepeatRowHeaders

Tablix.RepeatWith

Tablix.SortExpressions

Tablix.Style

Tablix.TablixBody

Tablix.TablixColumnHierarchy

Tablix.TablixCorner

Tablix.TablixRowHierarchy

Tablix.ToolTip

Tablix.Top

Tablix.Visibility

Tablix.Width

Tablix.ZIndex

Applies to RDL 2011/01

Child elements

Tablix.BandLayoutOptions

Tablix.BottomMargin

Tablix.CanScroll

Tablix.LeftMargin

Tablix.Relationship

Tablix.ReportSlicerState

Tablix.RightMargin

Tablix.TopMargin

The following is the XML Schema definition of the Tablix element in RDL 2008/01.

 <xsd:complexType name="TablixType">
   <xsd:choice minOccurs="1" maxOccurs="unbounded">
     <xsd:element name="TablixCorner" type="TablixCornerType" minOccurs="0" />
     <xsd:element name="TablixBody" type="TablixBodyType" minOccurs="0" />
     <xsd:element name="TablixColumnHierarchy" type="TablixHierarchyType" minOccurs="1" />
     <xsd:element name="TablixRowHierarchy" type="TablixHierarchyType" minOccurs="1" />
     <xsd:element name="LayoutDirection" minOccurs="0">
       <xsd:simpleType>
         <xsd:restriction base="xsd:string">
           <xsd:enumeration value="LTR" />
           <xsd:enumeration value="RTL" />
         </xsd:restriction>
       </xsd:simpleType>
     </xsd:element>
     <xsd:element name="GroupsBeforeRowHeaders" type="xsd:unsignedInt" minOccurs="0" />
     <xsd:element name="RepeatColumnHeaders" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="RepeatRowHeaders" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="FixedColumnHeaders" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="FixedRowHeaders" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="Style" type="StyleType" minOccurs="0" />
     <xsd:element name="SortExpressions" type="SortExpressionsType" minOccurs="0" />
     <xsd:element name="ActionInfo" type="ActionInfoType" minOccurs="0" />
     <xsd:element name="Top" type="SizeType" minOccurs="0" />
     <xsd:element name="Left" type="SizeType" minOccurs="0" />
     <xsd:element name="Height" type="SizeType" minOccurs="0" />
     <xsd:element name="Width" type="SizeType" minOccurs="0" />
     <xsd:element name="ZIndex" type="xsd:unsignedInt" minOccurs="0" />
     <xsd:element name="Visibility" type="VisibilityType" minOccurs="0" />
     <xsd:element name="ToolTip" type="StringLocIDType" minOccurs="0" />
     <xsd:element name="DocumentMapLabel" type="StringLocIDType" minOccurs="0" />
     <xsd:element name="Bookmark" type="xsd:string" minOccurs="0" />
     <xsd:element name="RepeatWith" type="xsd:string" minOccurs="0" />
     <xsd:element name="CustomProperties" type="CustomPropertiesType" minOccurs="0" />
     <xsd:element name="PageBreak" type="PageBreakType" minOccurs="0" />
     <xsd:element name="KeepTogether" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="NoRowsMessage" type="xsd:string" minOccurs="0" />
     <xsd:element name="DataSetName" type="xsd:string" minOccurs="0" />
     <xsd:element name="Filters" type="FiltersType" minOccurs="0" />
     <xsd:element name="DataElementName" type="xsd:string" minOccurs="0" />
     <xsd:element name="OmitBorderOnPageBreak" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="DataElementOutput" minOccurs="0">
       <xsd:simpleType>
         <xsd:restriction base="xsd:string">
           <xsd:enumeration value="Output" />
           <xsd:enumeration value="NoOutput" />
           <xsd:enumeration value="ContentsOnly" />
           <xsd:enumeration value="Auto" />
         </xsd:restriction>
       </xsd:simpleType>
     </xsd:element>
     <xsd:any namespace="##other" processContents="skip" />
   </xsd:choice>
   <xsd:attribute name="Name" type="xsd:normalizedString" use="required" />
   <xsd:anyAttribute namespace="##other" processContents="skip" />
 </xsd:complexType>

The following is the XML Schema definition of the Tablix element in RDL 2010/01 and RDL 2016/01.

Note  The following XSD represents RDL macro-versioned schemas only. Possible additions, identified earlier in this section, to base schema RDL 2010/01 from micro-versioned schemas RDL 2011/01, RDL 2012/01, and RDL 2013/01 are provided in sections 5.5, 5.6, and 5.7, respectively. For more information about macro- and micro-versioned schemas, see section 2.1.

 <xsd:complexType name="TablixType">
   <xsd:choice minOccurs="1" maxOccurs="unbounded">
     <xsd:element name="TablixCorner" type="TablixCornerType" minOccurs="0" />
     <xsd:element name="TablixBody" type="TablixBodyType" minOccurs="0" />
     <xsd:element name="TablixColumnHierarchy" type="TablixHierarchyType" minOccurs="1" />
     <xsd:element name="TablixRowHierarchy" type="TablixHierarchyType" minOccurs="1" />
     <xsd:element name="LayoutDirection" minOccurs="0">
       <xsd:simpleType>
         <xsd:restriction base="xsd:string">
           <xsd:enumeration value="LTR" />
           <xsd:enumeration value="RTL" />
         </xsd:restriction>
       </xsd:simpleType>
     </xsd:element>
     <xsd:element name="GroupsBeforeRowHeaders" type="xsd:unsignedInt" minOccurs="0" />
     <xsd:element name="RepeatColumnHeaders" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="RepeatRowHeaders" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="FixedColumnHeaders" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="FixedRowHeaders" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="Style" type="StyleType" minOccurs="0" />
     <xsd:element name="SortExpressions" type="SortExpressionsType" minOccurs="0" />
     <xsd:element name="ActionInfo" type="ActionInfoType" minOccurs="0" />
     <xsd:element name="Top" type="SizeType" minOccurs="0" />
     <xsd:element name="Left" type="SizeType" minOccurs="0" />
     <xsd:element name="Height" type="SizeType" minOccurs="0" />
     <xsd:element name="Width" type="SizeType" minOccurs="0" />
     <xsd:element name="ZIndex" type="xsd:unsignedInt" minOccurs="0" />
     <xsd:element name="Visibility" type="VisibilityType" minOccurs="0" />
     <xsd:element name="ToolTip" type="StringLocIDType" minOccurs="0" />
     <xsd:element name="DocumentMapLabel" type="StringLocIDType" minOccurs="0" />
     <xsd:element name="Bookmark" type="xsd:string" minOccurs="0" />
     <xsd:element name="RepeatWith" type="xsd:string" minOccurs="0" />
     <xsd:element name="CustomProperties" type="CustomPropertiesType" minOccurs="0" />
     <xsd:element name="PageBreak" type="PageBreakType" minOccurs="0" />
     <xsd:element name="PageName" type="xsd:string" minOccurs="0" />
     <xsd:element name="KeepTogether" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="NoRowsMessage" type="xsd:string" minOccurs="0" />
     <xsd:element name="DataSetName" type="xsd:string" minOccurs="0" />
     <xsd:element name="Filters" type="FiltersType" minOccurs="0" />
     <xsd:element name="DataElementName" type="xsd:string" minOccurs="0" />
     <xsd:element name="OmitBorderOnPageBreak" type="xsd:boolean" minOccurs="0" />
     <xsd:element name="DataElementOutput" minOccurs="0">
       <xsd:simpleType>
         <xsd:restriction base="xsd:string">
           <xsd:enumeration value="Output" />
           <xsd:enumeration value="NoOutput" />
           <xsd:enumeration value="ContentsOnly" />
           <xsd:enumeration value="Auto" />
         </xsd:restriction>
       </xsd:simpleType>
     </xsd:element>
     <xsd:any namespace="##other" processContents="lax" />
   </xsd:choice>
   <xsd:attribute name="Name" type="xsd:normalizedString" use="required" />
   <xsd:anyAttribute namespace="##other" processContents="lax" />
 </xsd:complexType>