#include <Wt/Ext/TableView>
Public Member Functions | |
TableView (WContainerWidget *parent=0) | |
Create a new table view. | |
void | setModel (WAbstractItemModel *model) |
Specify the model. | |
WAbstractItemModel * | model () const |
Get the model. | |
void | resizeColumnsToContents (bool onResize=false) |
Let the table view resize columns to fit their contents. | |
void | setAutoExpandColumn (int column, int minWidth=50, int maxWidth=1000) |
Set the column which will auto-expand to take the remaining space. | |
int | autoExpandColumn () const |
Get the column index of the column that auto-expands. | |
void | setDataLocation (DataLocation dataLocation) |
Configure the location of the data. | |
void | setColumnsMovable (bool movable) |
Allow the user to move columns using drag and drop. | |
bool | columnsMovable () const |
Return if columns are movable. | |
void | setAlternatingRowColors (bool enable) |
Render rows with alternating colors. | |
bool | alternatingRowColors () const |
Return if rows are rendered with alternating colors. | |
void | setHighlightMouseOver (bool highlight) |
Configure if the row under the mouse will be highlighted. | |
void | highlightMouseOver (bool highlight) |
Return if the row under the mouse will be highlighted. | |
void | setColumnHidden (int column, bool hide) |
Change the visibility of a column. | |
bool | isColumnHidden (int column) const |
Return if a column is hidden. | |
void | hideColumn (int column) |
Hide a column. | |
void | showColumn (int column) |
Show a column. | |
void | setColumnWidth (int column, int pixels) |
Set the column width (in pixels) for a column. | |
int | columnWidth (int column) const |
Get the column width. | |
void | setColumnAlignment (int column, HorizontalAlignment alignment) |
Set the content alignment of a column. | |
HorizontalAlignment | columnAlignment (int column) const |
Get content alignment of a column. | |
void | setColumnSortable (int column, bool sortable) |
Allow a column to be sorted by the user. | |
bool | isColumnSortable (int column) const |
Return if a column is sortable. | |
void | enableColumnHiding (int column, bool enable) |
Allow a column to be hidden through its context menu. | |
bool | isColumnHidingEnabled (int column) const |
Return if a column may be hidden through its context menu. | |
void | setEditor (int column, FormField *editor) |
Configure an editor for the given column. | |
void | setRenderer (int column, const std::string &rendererJS) |
Configure a custom renderer for the given column. | |
void | setPageSize (int pageSize) |
Configure a page size to browse the data page by page. | |
int | pageSize () const |
Get the page size. | |
ToolBar * | createPagingToolBar () |
Create a paging tool bar. | |
virtual void | refresh () |
Refresh the widget. | |
void | setCurrentCell (int row, int column) |
Give a cell focus. | |
int | currentRow () const |
Get the index of the row currently selected. | |
int | currentColumn () const |
Get the index of the column currently selected. | |
const std::vector < int > & | selectedRows () |
The list of rows that are currently selected. | |
void | clearSelection () |
Clear the current selection. | |
SelectionMode | selectionMode () const |
Get the current selection mode. | |
void | setSelectionMode (SelectionMode mode) |
Set the selection mode. | |
SelectionUnit | selectionUnit () const |
Get the current selection unit. | |
void | setSelectionUnit (SelectionUnit unit) |
Set the selection unit. | |
void | setSelectionBehavior (SelectionBehavior behavior) |
Set the selection behaviour. | |
SelectionBehavior | selectionBehavior () const |
Get the current selection unit. | |
Static Public Member Functions | |
static std::string | dateRenderer (const WString &format) |
Create a date renderer for the given format. | |
Public Attributes | |
JSignal< int, int > | cellClicked |
Signal emitted when a cell is clicked. | |
Signal< int, int, int, int > | currentCellChanged |
Signal emitted when a new cell received focus. | |
Signal | itemSelectionChanged |
Signal emitted when the selection changes. |
This class is a MVC view widget, which works in conjunction with a WAbstractItemModel for the data. The model may be set (and changed) using setModel().
The widget may be configured to allow the user to hide or resize columns, sort on column data, or reorder columns using drag&drop.
By default, the table is not editable. Use setEditor() to specify a form field that may be used for inline editing for a particular column. Changes are then reflected in the model().
The table supports single and multiple selection modes, that work on a row-level, or cell-level. The latter option is enforced when the table is editable.
By default, the data of the model is stored client-side, but this may be changed using setDataLocation() to be server-side. The latter option allows, in conjunction with a paging tool bar (see createPagingToolBar()) to support viewing (and editing) of large data sets.
Although TableView inherits from Container (through Panel), specifying a layout for adding or removing widgets is not supported. The Panel methods to specify tool bars, titles, and buttons are however supported.
Example of a TableView
Example of a editing in a TableView using a ComboBox
Wt::Ext::TableView::TableView | ( | WContainerWidget * | parent = 0 |
) |
Create a new table view.
You should specify a model using setModel(WAbstractItemModel *).
void Wt::Ext::TableView::setModel | ( | WAbstractItemModel * | model | ) |
Specify the model.
You can change the model at any time, with the contraint that you should keep the same column configuration.
You may also reset the same model. This will result in retransmission of the model from scratch. In some cases, this could result in a higher preformance when you have removed many rows or modified a lot of data.
WAbstractItemModel* Wt::Ext::TableView::model | ( | ) | const [inline] |
void Wt::Ext::TableView::resizeColumnsToContents | ( | bool | onResize = false |
) |
Let the table view resize columns to fit their contents.
By default, columns are sized using the column sizes that are provided. Using this method, this is changed to let columns expand to fit the entire table. By setting onResize, this is done also whenever the entire table or one of the columns is resized.
void Wt::Ext::TableView::setAutoExpandColumn | ( | int | column, | |
int | minWidth = 50 , |
|||
int | maxWidth = 1000 | |||
) |
Set the column which will auto-expand to take the remaining space.
By default the last column will do that.
void Wt::Ext::TableView::setDataLocation | ( | DataLocation | dataLocation | ) |
Configure the location of the data.
By default, data is stored at the client, and therefore entirely transmitted when rendering the table for the first time. Alternatively, the data may be kept at the server. Unless a paging tool bar is configured however, this will still cause the entire table to be anyway, after the table is rendered. When a paging tool bar is configured, only a single page of data is displayed, and transmitted, giving the best performance for big data sets.
void Wt::Ext::TableView::setColumnsMovable | ( | bool | movable | ) |
Allow the user to move columns using drag and drop.
Setting movable to true, enables the user to move columns around by drag and drop.
Note: this currently breaks the CellSelection mode to record the view column number, but not the data column number.
bool Wt::Ext::TableView::columnsMovable | ( | ) | const [inline] |
void Wt::Ext::TableView::setAlternatingRowColors | ( | bool | enable | ) |
Render rows with alternating colors.
By defaults, all rows are rendered using the same color.
bool Wt::Ext::TableView::alternatingRowColors | ( | ) | const [inline] |
void Wt::Ext::TableView::setHighlightMouseOver | ( | bool | highlight | ) |
Configure if the row under the mouse will be highlighted.
By default, the row under the mouse is not highlighted.
void Wt::Ext::TableView::setColumnHidden | ( | int | column, | |
bool | hide | |||
) |
bool Wt::Ext::TableView::isColumnHidden | ( | int | column | ) | const |
void Wt::Ext::TableView::hideColumn | ( | int | column | ) |
void Wt::Ext::TableView::showColumn | ( | int | column | ) |
void Wt::Ext::TableView::setColumnWidth | ( | int | column, | |
int | pixels | |||
) |
Set the column width (in pixels) for a column.
int Wt::Ext::TableView::columnWidth | ( | int | column | ) | const |
void Wt::Ext::TableView::setColumnAlignment | ( | int | column, | |
HorizontalAlignment | alignment | |||
) |
Set the content alignment of a column.
The default value is AlignLeft.
HorizontalAlignment Wt::Ext::TableView::columnAlignment | ( | int | column | ) | const |
void Wt::Ext::TableView::setColumnSortable | ( | int | column, | |
bool | sortable | |||
) |
Allow a column to be sorted by the user.
bool Wt::Ext::TableView::isColumnSortable | ( | int | column | ) | const |
void Wt::Ext::TableView::enableColumnHiding | ( | int | column, | |
bool | enable | |||
) |
Allow a column to be hidden through its context menu.
bool Wt::Ext::TableView::isColumnHidingEnabled | ( | int | column | ) | const |
void Wt::Ext::TableView::setEditor | ( | int | column, | |
FormField * | editor | |||
) |
Configure an editor for the given column.
Sets an inline editor that will be used to edit values in this column. The edited value will be reflected in the data model.
When configuring an editor, the selectionBehaviour() is set to SelectItems mode.
void Wt::Ext::TableView::setRenderer | ( | int | column, | |
const std::string & | rendererJS | |||
) |
Configure a custom renderer for the given column.
Sets a JavaScript function to render values in the given column. The JavaScript function takes one argument (the value), which has a type that corresponds to the C++ type:
C++ type | JavaScript type |
WString | string |
WDate | Ext.Date |
number type | number |
An example of rendererJS for numerical data, which renders positive values in green and negative values in red could be:
function change(val) { if (val > 0){ return '\<span style="color:green;"\>' + val + '\</span\>'; } else if(val < 0) { return '\<span style="color:red;"\>' + val + '\</span\>'; } return val; }
void Wt::Ext::TableView::setPageSize | ( | int | pageSize | ) |
Configure a page size to browse the data page by page.
By setting a pageSize that is different from -1, the table view will display only single pages of the whole data set. You should probably add a paging tool bar to allow the user to scroll through the pages.
int Wt::Ext::TableView::pageSize | ( | ) | const [inline] |
ToolBar * Wt::Ext::TableView::createPagingToolBar | ( | ) |
Create a paging tool bar.
Create a toolbar that provides paging controls for this table. You should configure the page size using setPageSize(int).
void Wt::Ext::TableView::refresh | ( | ) | [virtual] |
Refresh the widget.
The refresh method is invoked when the locale is changed using WApplication::setLocale() or when the user hit the refresh button.
The widget must actualize its contents in response.
Reimplemented from Wt::Ext::Panel.
std::string Wt::Ext::TableView::dateRenderer | ( | const WString & | format | ) | [static] |
Create a date renderer for the given format.
The result is a JavaScript function that renders WDate (or more precisely, Ext.Date) values according to the given format, for use in setRenderer()
void Wt::Ext::TableView::setCurrentCell | ( | int | row, | |
int | column | |||
) |
Give a cell focus.
When selectionBehavior() is SelectRows, only the row argument is used, and the effect is to select a particular row.
Even when selectionMode() is ExtendedSelection, this method will first clear selection, and the result is that the given row,column will be the only selected cell.
setSelectionMode(SelectionMode), setSelectionBehaviour(SelectionBehavior)
int Wt::Ext::TableView::currentRow | ( | ) | const [inline] |
int Wt::Ext::TableView::currentColumn | ( | ) | const [inline] |
const std::vector<int>& Wt::Ext::TableView::selectedRows | ( | ) | [inline] |
The list of rows that are currently selected.
This is the way to retrieve the list of currently selected rows when selectionBehavior() is SelectRows. This list is always empty when selectionBehavior() is SelectItems and you should use currentRow() and currentColumn() instead.
void Wt::Ext::TableView::clearSelection | ( | ) |
SelectionMode Wt::Ext::TableView::selectionMode | ( | ) | const [inline] |
void Wt::Ext::TableView::setSelectionMode | ( | SelectionMode | mode | ) |
Set the selection mode.
The selection mode determines if no, only one, or multiple items may be selected.
When selectionBehavior() is SelectItems, ExtendedSelection is not supported.
SelectionUnit Wt::Ext::TableView::selectionUnit | ( | ) | const |
Get the current selection unit.
void Wt::Ext::TableView::setSelectionUnit | ( | SelectionUnit | unit | ) |
Set the selection unit.
void Wt::Ext::TableView::setSelectionBehavior | ( | SelectionBehavior | behavior | ) |
Set the selection behaviour.
The selection behavior defines the unit of selection. The selection behavior also determines the set of methods that must be used to inspect the current selection.
You may either:
SelectionBehavior Wt::Ext::TableView::selectionBehavior | ( | ) | const |
JSignal<int, int> Wt::Ext::TableView::cellClicked |
Signal emitted when a cell is clicked.
The signal arguments are row and column of the cell that is clicked.
Signal<int, int, int, int> Wt::Ext::TableView::currentCellChanged |
Signal emitted when a new cell received focus.
This signal is only emitted when selectionBehavior() is SelectItems. The four arguments are row, column, prevrow, prevcolumn which hold respectively the location of the new focussed cell, and the previously focussed cell.
Values of -1 indicate 'no selection'.
Signal emitted when the selection changes.
selectedRows() when selectionBehavior() is SelectRows.