dvt:dataCell dataCell data cell

UIComponent class: oracle.adf.view.faces.bi.component.pivotTable.UIDataCell
Component type: oracle.dss.adf.pivotTable.DataCell

Each immediate child of a Pivot Table component must either be a <dvt:headerCell> or <dvt:dataCell> component. The Pivot Table should contain at most one headerCell component and at most one dataCell component. These components make it possible to customize the cell content via stamping. For example, each dataCell can contain non-editable content or editable content.

Data Cell Features


Rather than having a separate child component for each cell in the pivot table, the child component of the dataCell component is repeatedly rendered (stamped) once per data cell. Because of this stamping behavior, only certain types of components are supported as children inside a Data Cell. Supported components include all components with no behavior and most components that implement the EditableValueHolder or ActionSource interfaces.

As the dataCell content is stamped, the data for the current cell is copied into an EL reachable property. The name of this property is defined by the var property on the Pivot Table. Once the Pivot Table has completed rendering, this property is removed (or reverted back to its previous value). In the following example, the data for each cell is placed under the EL property "cellData". Each data cell displays its content by getting further properties from the "cellData" property:

                        <dvt:pivotTable var="cellData" >
                            <dvt:dataCell >
                                <af:outputText value="#{cellData.dataValue}" />

Customized Cell Content and Style

For customizing data cell content, use DataFormat. DataFormat attribute returns instances of oracle.dss.adf.view.faces.bi.component.pivotTable.CellFormat. CellFormat instances allow specification of the following:

Data Cell content can be specified by using a logical component such as <af:switcher>.

The following example shows how Data Cell supports alternative cell content using <af:switcher> based on the stamping property. In other words, the stamping content is customized on a cell by cell basis depending on a variable value ("#{richPivotTableModel.stampFacet}"). The example also shows custom CSS styling using inlineStyle and contentStyle attributes of outputText and inputText respectively.

                           varStatus="cellStatus" >          
                    <af:switcher facetname="O__richPivotTableModel_stampFacet_">
                      <f:facet name="outputText">         
                        <af:outputText  value="#{cellData.dataValue}" inlineStyle="#{cellStatus.cellFormat.textStyle}"/>    
                      <f:facet name="inputText">  
                        <af:inputText  value="#{cellData.dataValue}" contentStyle="#{cellStatus.cellFormat.textStyle}" />   

The following example uses <af:switcher> to vary the type of stamped component by measure (i.e. different content for Sales, Weight, etc.). The example also shows different components that can be used as child tag of <dvt:dataCell>


          <dvt:pivotTable var="cellData">
              <af:switcher id="sw" facetname="O__cellStatus_members_MeasDim_value_" defaultFacet="Other">
                <f:facet name="Sales">
                  <af:inputText  value="#{cellData.dataValue}"   />  
                <f:facet name="Units">
                  <af:inputText  value="#{cellData.dataValue}"   >      
                    <af:validateLength maximum="6" minimum="2" />
                <f:facet name="Weight">
                  <af:outputText value="#{cellData.dataValue}" />
                <f:facet name="Color">
                  <af:selectOneChoice id="idselectonechoice"
                                      value="#{cellData.dataValue}" label="Color">
                    <af:selectItem label="red" value="red" shortDesc="shortDesc sample"/>                                
                    <af:selectItem label="coffee" value="coffee" shortDesc="Sample shortDesc text"/>                            
                    <af:selectItem label="milk" value="milk" shortDesc="Another shortDesc sample"/>                            
                <f:facet name="Available">
                  <af:selectBooleanCheckbox id="idselectbooleancheckbox" label="Availability" text="Item Available"
                                            autoSubmit="true" value="#{cellData.dataValue}"/>                    
                <f:facet name="Supply_Date">
                  <af:inputDate  value="#{cellData.dataValue}"
                                 label="Change Date:" simple="true" >                        
                    <af:validateDateTimeRange maximum="2020-12-31" minimum="1980-12-31" />
                <f:facet name="Link">
                  <af:commandLink text="#{cellData.dataValue}" immediate="true" action="guide" id="idcommandlink"/>
                <f:facet name="Size">
                  <af:inputComboboxListOfValues label="Size" id="idInputComboboxListOfValues"                                       
                             value="#{cellData.dataValue}"  searchDesc="Search Size"                                        
                             columns="3"   />
                <f:facet name="Other">
                  <af:outputText  value="#{cellData.dataValue}"   />  


Supported Child Tags

Examples of components that are supported by <dvt:dataCell> include but are not limited to the following:

The dataCell should have only one child component. If multiple children are desired, they should be wrapped in another component. If no layout is desired, <af:group> can be used, which simply renders its children without adding layout, and is consequently lightweight. If layout is desired, a layout component like <af:panelGroupLayout> can be used instead. If multiple children are present without being wrapped, the current behavior is to vertically stack the components, but no guarantees or support are provided for this usage. To achieve vertical stacking, consider <panelGroupLayout layout="vertical">.


The following example shows a way to use stamping

                <dvt:pivotTable id="goodPT"
                    <af:outputText  value="#{cellData.dataValue}"   />  


Type Phases Description
org.apache.myfaces.trinidad.event.AttributeChangeEvent Invoke Application,
Apply Request Values
Event delivered to describe an attribute change. Attribute change events are not delivered for any programmatic change to a property. They are only delivered when a renderer changes a property without the application's specific request. An example of an attribute change events might include the width of a column that supported client-side resizing.


Name Type Supports EL? Description
attributeChangeListener javax.el.MethodExpression Only EL a method reference to an attribute change listener. Attribute change events are not delivered for any programmatic change to a property. They are only delivered when a renderer changes a property without the application's specific request. An example of an attribute change events might include the width of a column that supported client-side resizing.
binding oracle.adf.view.faces.bi.component.pivotTable.UIDataCell Only EL an EL reference that will store the component instance on a bean. This can be used to give programmatic access to a component from a backing bean, or to move creation of the component to a backing bean.
customizationId String Yes This attribute is deprecated. The 'id' attribute should be used when applying persistent customizations. This attribute will be removed in the next release.
dataAttribute String Yes This attribute is deprecated. A switcher should be used instead. The data attribute (e.g. Sales, Cost, ... ) that has its data cell content rendered by this DataCell. If not specified or empty(""), then the DataCell is used as the default data cell content.
id String No the identifier for the component. The identifier must follow a subset of the syntax allowed in HTML:
  • Must not be a zero-length String.
  • First character must be an ASCII letter (A-Za-z) or an underscore ('_').
  • Subsequent characters must be an ASCII letter or digit (A-Za-z0-9), an underscore ('_'), or a dash ('-').
rendered boolean Yes whether the component is rendered. When set to false, no output will be delivered for this component (the component will not in any way be rendered, and cannot be made visible on the client). If you want to change a component's rendered attribute from false to true using PPR, set the partialTrigger attribute of its parent component so the parent refreshes and in turn will render this component.