View Source

h2. Overview
_Since 3.0_

The _ace:Column_ renders a HTML td element representing a single column of data in the rows of the iterating parent DataTable.

Features of the column and interacting components include:
* Row Editing
* Row Panel Expansion
* Row Sub-row Expansion
* Filtering
* Sorting
* Column Visibility
* Column Stacking
* Column Configuration Panel
* Edit and Filter Event Listeners
* Column, Row Spanning Headers & Footers
* Optional Application-bound State
** Filtering
** Sorting


h2. Getting Started
{code}
<ace:dataTable var="track" value="#{bean.tracks}">
<ace:column headerText="Album">
<h:outputText value="#{track.album}"/>
</ace:column>
</ace:dataTable>
{code}




h2. Attributes
{tip:title=TagLib Documentation}This section covers attributes involved in the typical use-cases for this component. For reference, the complete taglib documentation for this component is available [here|http://www.icefaces.org/docs/v4_latest/ace/tld/ace/column.html].{tip}
{panel}
*sortBy* \- Value expression defining the object this column will sort by.
{code:xml|borderStyle=dashed} <ace:column sortBy="#{track.album}">
<h:outputText value="#{track.album}"/>
</ace:column>
{code}
{panel}
{panel}
*sortFunction* \- Value expression for a Comparator<Object> that will be used to sort the objects referred to by *sortBy*. If this property is not defined, it is assumed that the objects referred to by *sortBy* implement the Comparable interface.
{code:xml|borderStyle=dashed} <ace:column sortBy="#{track.album}" sortFunction="#{bean.albumCustomSortFunction}">
<h:outputText value="#{track.album.name}"/>
</ace:column>
{code}
{panel}
{panel}
*sortPriority* \- Priority of this column among columns of a multi-column sort, starting at 1. Available for binding in situations of application initated or application persisted sorted states. Having a non-null priority enables sorting for this column when applyFilters() is called on the DataTable.
{code:xml|borderStyle=dashed} <ace:column sortBy="#{track.album}" sortPriority="#{bean.albumSortPriority}" >
<h:outputText value="#{track.album}"/>
</ace:column>
{code}
{panel}
{panel}
*sortAscending* \- Boolean value indicating if this sorted (as indicated by a set *sortPriority*) column is ascending.
{code:xml|borderStyle=dashed} <ace:column sortBy="#{track.album}" sortAscending="#{bean.albumSortAscending}">
<h:outputText value="#{track.album}"/>
</ace:column>
{code}
{panel}
{panel}
*filterBy* \- Value expression defining the object this column will filter by.
{code:xml|borderStyle=dashed} <ace:column filterBy="#{track.album}">
<h:outputText value="#{track.album}"/>
</ace:column>
{code}
{panel}
{panel}
*filterValue* \- Value of the filter input field. The input that will be used to filter the objects defined by *filterBy*.
{code:xml|borderStyle=dashed} <ace:column filterBy="#{track.album}" filterValue="#{bean.albumFilterInput}">
<h:outputText value="#{track.album}"/>
</ace:column>
{code}
{panel}
{panel}
*filterOptions* \- A collection of SelectItem objects for use as filter choices.
Managed Bean:
{code:java|borderStyle=dashed} public List<SelectItem> filterOptions = new ArrayList<SelectItem>() {{
add(new SelectItem("Van"));
add(new SelectItem("Bus"));
add(new SelectItem("Compact"));
add(new SelectItem("Semi-Truck"));
add(new SelectItem("Pickup"));
}};
{code}
Facelet Markup:
{code:xml|borderStyle=dashed} <ace:column filterBy="#{track.albumn}" filterOptions="#{bean.filterOptions}">
<h:outputText value="#{track.album}"/>
</ace:column>
{code}
{panel}
{panel}
*filterMatchMode* \- Method of String comparison used to evaluate the filter, types available include: "contains", "exact", "startsWith", "endsWith". Defaults to "startsWith".
{code:xml|borderStyle=dashed} <ace:column filterBy="#{track.albumn}" filterMatchMode="exact">
<h:outputText value="#{track.album}"/>
</ace:column>
{code}
{panel}
{panel}
*rowspan* \- Defines the number of Row objects this Column should span. Only relevant on a Column used inside a ColumnGroup and Row component.
{code:xml|borderStyle=dashed} <ace:columnGroup type="header">
<ace:row>
<ace:column colSpan="2">
Track
</ace:column>
<ace:column rowSpan="2">
Download
</ace:column>
</ace:row>
<ace:row>
<ace:column>
Artist
</ace:column>
<ace:column>
Album
</ace:column>
</ace:row>
</ace:columnGroup>
{code}
{panel}
{panel}
*colspan* \- Defines the number of TD elements this Column should span. Only relevant on a Column used inside a ColumnGroup and Row component.
{code:xml|borderStyle=dashed} <ace:columnGroup type="header">
<ace:row>
<ace:column colSpan="2">
Track
</ace:column>
</ace:row>
<ace:row>
<ace:column>
Artist
</ace:column>
<ace:column>
Album
</ace:column>
</ace:row>
</ace:columnGroup>
{code}
{panel}
{panel}
*headerText* \- A plain text header with less effort than adding a facet. Note that even when using a header facet this property should also be set as a short-form label for the column that will be used within the ace:tableConfigPanel.")

{code:xml|borderStyle=dashed} <ace:column headerText="Album">
<h:outputText value="#{track.album}"/>
</ace:column>
{code}
{panel}

{info:title=Component Documentation}This section covers components signifigant to the conventional row selection / pagination / expandable panel sample above. For further reference on the features listed in the overview, see the [related components section|DataTable#related], the [section related to lazy loading|DataTable#lazy] and the [complete taglib|http://www.icefaces.org/docs/v3_latest/ace/tld/ace/dataTable.html] & [API] documentation for this component.{info}
{panel}
[_TableConfigPanel_|TableConfigPanel] \- Renders a panel allowing the configuration of Column features, like visibility, filtering, sorting and column order in a single compact control.
{panel}
h2. Known Issues

{anchor:related}

h2. Related Components

* _[DataTable|DataTable]_
* _[ColumnGroup|ColumnGroup]_
* _[CellEditor|CellEditor]_
* _[Row|Row]_
* _[RowEditor|RowEditor]_
* _[ExpansionToggler|ExpansionToggler]_
* _[TableConfigPanel|TableConfigPanel]_
* _[DataExporter|DataExporter]_