Wt
3.2.3
|
A widget that displays data in a table. More...
#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 |
Return 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 |
Return 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. | |
bool | highlightMouseOver () const |
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 |
Return the column width. | |
void | setColumnAlignment (int column, AlignmentFlag alignment) |
Set the horizontal content alignment of a column. | |
AlignmentFlag | columnAlignment (int column) const |
Return the horizontal 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 |
Return 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 |
Return the index of the row currently selected. | |
int | currentColumn () const |
Return 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 |
Return the current selection mode. | |
void | setSelectionMode (SelectionMode mode) |
Set the selection mode. | |
void | setSelectionBehavior (SelectionBehavior behavior) |
Set the selection behaviour. | |
SelectionBehavior | selectionBehavior () const |
Return the current selection behaviour. | |
Signal< 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. | |
Static Public Member Functions | |
static std::string | dateRenderer (const WString &format) |
Create a date renderer for the given format. |
A widget that displays data in a table.
This class is an 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.
A TableView has the table.x-grid3-row-table
style classes.
Wt::Ext::TableView::TableView | ( | WContainerWidget * | parent = 0 | ) |
Create a new table view.
You should specify a model using setModel(WAbstractItemModel *).
bool Wt::Ext::TableView::alternatingRowColors | ( | ) | const |
Return if rows are rendered with alternating colors.
Signal<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.
void Wt::Ext::TableView::clearSelection | ( | ) |
Clear the current selection.
AlignmentFlag Wt::Ext::TableView::columnAlignment | ( | int | column | ) | const |
Return the horizontal content alignment of a column.
bool Wt::Ext::TableView::columnsMovable | ( | ) | const |
Return if columns are movable.
int Wt::Ext::TableView::columnWidth | ( | int | column | ) | const |
Return the column width.
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).
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'.
int Wt::Ext::TableView::currentColumn | ( | ) | const |
Return the index of the column currently selected.
int Wt::Ext::TableView::currentRow | ( | ) | const |
Return the index of the row currently selected.
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::enableColumnHiding | ( | int | column, |
bool | enable | ||
) |
Allow a column to be hidden through its context menu.
void Wt::Ext::TableView::hideColumn | ( | int | column | ) |
Hide a column.
bool Wt::Ext::TableView::isColumnHidden | ( | int | column | ) | const |
Return if a column is hidden.
bool Wt::Ext::TableView::isColumnHidingEnabled | ( | int | column | ) | const |
Return if a column may be hidden through its context menu.
bool Wt::Ext::TableView::isColumnSortable | ( | int | column | ) | const |
Return if a column is sortable.
Signal& Wt::Ext::TableView::itemSelectionChanged | ( | ) |
Signal emitted when the selection changes.
WAbstractItemModel* Wt::Ext::TableView::model | ( | ) | const |
Return the model.
int Wt::Ext::TableView::pageSize | ( | ) | const |
Return the page size.
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.
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.
const std::vector<int>& Wt::Ext::TableView::selectedRows | ( | ) |
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.
SelectionBehavior Wt::Ext::TableView::selectionBehavior | ( | ) | const |
Return the current selection behaviour.
SelectionMode Wt::Ext::TableView::selectionMode | ( | ) | const |
Return the current selection mode.
void Wt::Ext::TableView::setAlternatingRowColors | ( | bool | enable | ) |
Render rows with alternating colors.
By defaults, all rows are rendered using the same color.
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::setColumnAlignment | ( | int | column, |
AlignmentFlag | alignment | ||
) |
Set the horizontal content alignment of a column.
The default value is AlignLeft. The alignment parameter is a horizontal alignment flag.
void Wt::Ext::TableView::setColumnHidden | ( | int | column, |
bool | hide | ||
) |
Change the visibility of a column.
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.
void Wt::Ext::TableView::setColumnSortable | ( | int | column, |
bool | sortable | ||
) |
Allow a column to be sorted by the user.
void Wt::Ext::TableView::setColumnWidth | ( | int | column, |
int | pixels | ||
) |
Set the column width (in pixels) for a column.
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.
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::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::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::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.
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.
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::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:
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.
void Wt::Ext::TableView::showColumn | ( | int | column | ) |
Show a column.