- Direct, inline editing of row data
- Column filtering, with wildcard matching support (*)
- Create new rows
- Delete rows
- Column reordering
- Column auto-sorting
- Column resizing
- Auto-pagination and pagination info
- Complete event model and listener callbacks for all table events
- Hide and show columns
- Edits are done in a safe 'edit space' and the direct objects are untouched until the data is saved
- When a row is selected for editing, it becomes locked in edit mode until the changes are either saved or cancelled
- Supports editing of text, list, date, and boolean data
- Columns can be made editable or non-editable
- Columns can be made hideable or non-hideable

- The following richDataGrid was created by specifying a List of employees, and defining the columns to be used
  - This is the best approach to use when you to have more control over the presentation of columns, and would like to specify different attributes for different columns
- Different column types are defined (Date, List, and Text Columns)
- Some columns are specified as editable, and some are not (id)
  - To edit a row, click anywhere on the row area
- Some columns are specified as shown by default, and some are not (birth date and department)
  - To show a hidden column, right click anywhere in the top header area (beside the pagination info), and select one of the hidden columns from the context menu
  - To hide a column, click on the red x button in the lower right of the column header area
- Some columns are specified as sortable, and some are not (first name)
- Some columns are specified as filterable, and some are not (id)
  - In the current release, only RichDataTextColumns are filterable
- The columns are resizable (only available in non-filtering mode)
- For the list type column (department), a JSF expression was used to retrieve the available list items (a pre-defined list of SelectItems can also be provided to the column bean constructor)
- For the date type column (birth date), a specific format is specified for the converter
- All events are captured with a custom listener interface

#### Add a new row above or below an existing row (enter the id of an an existing row)

#### Add a new row at a specific row index of the current table

- The following richDataGrid was created simply by specifying a List of employees, without specifying any columns, and having those columns auto-generated
  - This is the best approach to use when you may not have a pre-defined set of columns, or a dynamic number or columns
- All columns are editable
- All columns are shown by default
- All columns are sortable
- For date columns, the default JSF converter using GMT, is used