PHP Class Prado\Web\UI\WebControls\TDataGridColumn

TDataGridColumn serves as the base class for the different column types of the {@link TDataGrid} control. TDataGridColumn defines the properties and methods that are common among all datagrid column types. In particular, it initializes header and footer cells according to {@link setHeaderText HeaderText} and {@link getHeaderStyle HeaderStyle} {@link setFooterText FooterText} and {@link getFooterStyle FooterStyle} properties. If {@link setHeaderImageUrl HeaderImageUrl} is specified, the image will be displayed instead in the header cell. The {@link getItemStyle ItemStyle} is applied to cells that belong to non-header and -footer datagrid items. When the datagrid enables sorting, if the {@link setSortExpression SortExpression} is not empty, the header cell will display a button (linkbutton or imagebutton) that will bubble the sort command event to the datagrid. Since v3.1.0, TDataGridColumn has introduced two new properties {@link setHeaderRenderer HeaderRenderer} and {@link setFooterRenderer FooterRenderer} which can be used to specify the layout of header and footer column cells. A renderer refers to a control class that is to be instantiated as a control. For more details, see {@link TRepeater} and {@link TDataList}. Since v3.1.1, TDataGridColumn has introduced {@link setEnableCellGrouping EnableCellGrouping}. If a column has this property set true, consecutive cells having the same content in this column will be grouped into one cell. Note, there are some limitations to cell grouping. We determine the cell content according to the cell's {@link TTableCell::getText Text} property. If the text is empty and the cell has some child controls, we will pick up the first control who implements {@link \Prado\IDataRenderer} and obtain its {@link \Prado\IDataRenderer::getData Data} property. The following datagrid column types are provided by the framework currently, - {@link TBoundColumn}, associated with a specific field in datasource and displays the corresponding data. - {@link TEditCommandColumn}, displaying edit/update/cancel command buttons - {@link TDropDownListColumn}, displaying a dropdown list when the item is in edit state - {@link TButtonColumn}, displaying generic command buttons that may be bound to specific field in datasource. - {@link THyperLinkColumn}, displaying a hyperlink that may be bound to specific field in datasource. - {@link TCheckBoxColumn}, displaying a checkbox that may be bound to specific field in datasource. - {@link TTemplateColumn}, displaying content based on templates. To create your own column class, simply override {@link initializeCell()} method, which is the major logic for managing the data and presentation of cells in the column.
Since: 3.0
Author: Qiang Xue ([email protected])
Inheritance: extends Prado\TApplicationComponent
Show file Open project: pradosoft/prado Class Usage Examples

Public Methods

Method Description
getAllowSorting ( ) : boolean Returns a value indicating whether this column allows sorting.
getEnableCellGrouping ( ) : boolean
getFooterRenderer ( ) : string
getFooterStyle ( $createStyle = true ) : TTableItemStyle
getFooterText ( ) : string
getHeaderImageUrl ( ) : string
getHeaderRenderer ( ) : string
getHeaderStyle ( $createStyle = true ) : TTableItemStyle
getHeaderText ( ) : string
getID ( ) : string
getItemStyle ( $createStyle = true ) : TTableItemStyle
getOwner ( ) : TDataGrid
getSortExpression ( ) : string
getVisible ( $checkParents = true ) : boolean
initialize ( ) Initializes the column.
initializeCell ( $cell, $columnIndex, $itemType ) Initializes the specified cell to its initial values.
loadState ( $state ) Loads persistent state values.
saveState ( ) : mixed Saves persistent state values.
setEnableCellGrouping ( $value )
setFooterRenderer ( $value ) Sets the column footer cell renderer class.
setFooterText ( $value )
setHeaderImageUrl ( $value )
setHeaderRenderer ( $value ) Sets the column header cell renderer class.
setHeaderText ( $value )
setID ( $value ) Sets the ID of the column.
setOwner ( TDataGrid $value )
setSortExpression ( $value )
setVisible ( $value )

Protected Methods

Method Description
formatDataValue ( $formatString, $value ) : string Formats the text value according to a format string.
getDataFieldValue ( $data, $field ) : mixed Fetches the value of the data at the specified field.
getViewState ( $key, $defaultValue = null ) : mixed Returns a viewstate value.
initializeFooterCell ( $cell, $columnIndex ) Initializes the footer cell.
initializeHeaderCell ( $cell, $columnIndex ) Initializes the header cell.
setViewState ( $key, $value, $defaultValue = null ) Sets a viewstate value.

Method Details

formatDataValue() protected method

If the format string is empty, the original value is converted into a string and returned. If the format string starts with '#', the string is treated as a PHP expression within which the token '{0}' is translated with the data value to be formated. Otherwise, the format string and the data value are passed as the first and second parameters in {@link sprintf}.
protected formatDataValue ( $formatString, $value ) : string
return string the formatted result

getAllowSorting() public method

The column allows sorting only when {@link getSortExpression SortExpression} is not empty and the datagrid allows sorting.
public getAllowSorting ( ) : boolean
return boolean whether this column allows sorting

getDataFieldValue() protected method

If the data is an array, the field is used as an array key. If the data is an of {@link TMap}, {@link TList} or their derived class, the field is used as a key value. If the data is a component, the field is used as the name of a property.
protected getDataFieldValue ( $data, $field ) : mixed
return mixed data value at the specified field

getEnableCellGrouping() public method

Since: 3.1.1
public getEnableCellGrouping ( ) : boolean
return boolean whether cells having the same content should be grouped together. Defaults to false.

getFooterRenderer() public method

Since: 3.1.0
public getFooterRenderer ( ) : string
return string the class name for the column footer cell renderer. Defaults to empty, meaning not set.

getFooterStyle() public method

public getFooterStyle ( $createStyle = true ) : TTableItemStyle
return TTableItemStyle the style for footer

getFooterText() public method

public getFooterText ( ) : string
return string the text to be displayed in the footer of this column

getHeaderImageUrl() public method

public getHeaderImageUrl ( ) : string
return string the url of the image to be displayed in header

getHeaderRenderer() public method

Since: 3.1.0
public getHeaderRenderer ( ) : string
return string the class name for the column header cell renderer. Defaults to empty, meaning not set.

getHeaderStyle() public method

public getHeaderStyle ( $createStyle = true ) : TTableItemStyle
return TTableItemStyle the style for header

getHeaderText() public method

public getHeaderText ( ) : string
return string the text to be displayed in the header of this column

getID() public method

public getID ( ) : string
return string the ID of the column.

getItemStyle() public method

public getItemStyle ( $createStyle = true ) : TTableItemStyle
return TTableItemStyle the style for item

getOwner() public method

public getOwner ( ) : TDataGrid
return TDataGrid datagrid that owns this column

getSortExpression() public method

public getSortExpression ( ) : string
return string the name of the field or expression for sorting

getViewState() protected method

Returns a viewstate value.
protected getViewState ( $key, $defaultValue = null ) : mixed
return mixed the viewstate value corresponding to $key

getVisible() public method

public getVisible ( $checkParents = true ) : boolean
return boolean whether the column is visible. Defaults to true.

initialize() public method

This method is invoked by {@link TDataGrid} when the column is about to be used to initialize datagrid items. Derived classes may override this method to do additional initialization.
public initialize ( )

initializeCell() public method

The default implementation sets the content of header and footer cells. If sorting is enabled by the grid and sort expression is specified in the column, the header cell will show a link/image button. Otherwise, the header/footer cell will only show static text/image. This method can be overriden to provide customized intialization to column cells.
public initializeCell ( $cell, $columnIndex, $itemType )

initializeFooterCell() protected method

This method attempts to use {@link getFooterRenderer FooterRenderer} to instantiate the footer cell. If that is not available, it will populate the cell with a text string specified by {@link getFooterImageUrl FooterImageUrl}
protected initializeFooterCell ( $cell, $columnIndex )

initializeHeaderCell() protected method

This method attempts to use {@link getHeaderRenderer HeaderRenderer} to instantiate the header cell. If that is not available, it will populate the cell with an image or a text string, depending on {@link getHeaderImageUrl HeaderImageUrl} and {@link getHeaderText HeaderText} property values. If the column allows sorting, image or text will be created as a button which issues Sort command upon user click.
protected initializeHeaderCell ( $cell, $columnIndex )

loadState() public method

Loads persistent state values.
public loadState ( $state )

saveState() public method

Saves persistent state values.
public saveState ( ) : mixed
return mixed values to be saved

setEnableCellGrouping() public method

Since: 3.1.1
public setEnableCellGrouping ( $value )

setFooterRenderer() public method

If not empty, the class will be used to instantiate as a child control in the column footer cell. If the class implements {@link \Prado\IDataRenderer}, the Data property will be set as the {@link getFooterText FooterText}.
Since: 3.1.0
public setFooterRenderer ( $value )

setFooterText() public method

public setFooterText ( $value )

setHeaderImageUrl() public method

public setHeaderImageUrl ( $value )

setHeaderRenderer() public method

If not empty, the class will be used to instantiate as a child control in the column header cell. If the class implements {@link \Prado\IDataRenderer}, the Data property will be set as the {@link getFooterText FooterText}.
Since: 3.1.0
public setHeaderRenderer ( $value )

setHeaderText() public method

public setHeaderText ( $value )

setID() public method

By explicitly specifying the column ID, one can access the column by $templateControl->ColumnID.
public setID ( $value )

setOwner() public method

public setOwner ( TDataGrid $value )
$value TDataGrid

setSortExpression() public method

public setSortExpression ( $value )

setViewState() protected method

Make sure that the viewstate value must be serializable and unserializable.
protected setViewState ( $key, $value, $defaultValue = null )

setVisible() public method

public setVisible ( $value )