Sorting can be enable via the `sortable` attribute in the `<tc:column/>`. A custom sorting implementation can be set in the `sortActionListener` attribute in the `<tc:sheet/>`.

It's important to have a component inside the `<tc:column/>`, e.g. `<tc:out value="\#{object.name}"/>`. If there is only a fragment like `\#{object.name}`, sorting will not be possible!

Tag Library Documentation: |

In this example, the `sortable` attribute is 'true' for all columns. Notice, that there are negative periods.

<tc:column label="Name" sortable="true">

All columns in this sheet can be sorted. A custom sorting implementation is set. Now, the sign for period numbers is ignored by sorting.

<tc:sheet value="\#{sheetController.solarList}" var="solarobject" rows="4" sortActionListener="\#{sheetController.sheetSorter}"> <tc:column id="namecol" label="Name" sortable="true"> ...

With the attribute `maxSortColumns` it is possible to visualize more than one sorting column. In this example you can sort by 3 columns. It works by clicking the column header in the reverse order. It's also possible to use ascending and descanding orders mixed.

It is also possible to use this via the API from the application like the button below shows.