Auto-sorting by columns
| ID | Name | Status | |
|---|---|---|---|
| 79409 | Aliquyam Labore | aliquyam-labore@sea.com | NO |
| 75574 | Takimata Vero | takimata-vero@eirmod.com | SED |
| 49943 | Sanctus Justo | sanctus-justo@eos.com | ET |
| 41552 | Sea Dolor | sea-dolor@rebum.com | ALIQUYAM |
| 40214 | Diam Et | diam-et@invidunt.com | SEA |
| 32129 | Et Lorem | et-Lorem@sed.com | VOLUPTUA |
| 22739 | Nonumy Dolores | nonumy-dolores@ipsum.com | SEA |
| 19533 | Rebum Erat | rebum-erat@eirmod.com | SEA |
| 17959 | Sed Eirmod | sed-eirmod@consetetur.com | SIT |
| 17660 | Clita Dolores | clita-dolores@justo.com | LABORE |
If you want to allow the user to sort the data as it is coming back, then you need to just do two things, make
sure that the data returned from your property implements the Comparable interface (if it doesn't natively - use
the decorator pattern as shown a couple of examples ago), and then set the attribute
sortable="true"
on the columns that you want to be able to sort by.
Note the
sortable
attribute was previously named
sort
. The sort attribute is still supported for compatibility with previous versions.
When the user clicks on the column title the rows will be sorted in ascending order and redisplayed on the page. If the user clicks on the column title again, the data will get sorted in descending order and redisplayed.
Only the rows being shown on the page are sorted and resorted, so if you use this attribute along with the pagesize attribute, it will not resort the entire list. It is assumed that if you want to allow the user to resort a large list that will not all fit on a single page, then you will provide an interface which is more appropriate to that task.
When doing sorts, we copy the list into our own internally managed list, so that we don't change the ordering of the original list.
All the parameters received in the first request are preserved in sorting.
You can also define the column to be sorted by default (if the user has not yet clicked on any sortable column)
specifying the column index in the
defaultsort
attribute of the table tag. The default order can be set using the
defaultorder
attribute: the default value is
ascending
, you can set it to
descending
to reverse the order.