CCheckBoxColumn
Package | zii.widgets.grid |
---|---|
Inheritance | class CCheckBoxColumn » CGridColumn » CComponent |
Since | 1.1 |
Version | $Id: CCheckBoxColumn.php 3437 2011-11-07 15:03:58Z mdomba $ |
Source Code | framework/zii/widgets/grid/CCheckBoxColumn.php |
CCheckBoxColumn supports no selection (read-only), single selection and multiple selection. The mode is determined according to selectableRows. When in multiple selection mode, the header cell will display an additional checkbox, clicking on which will check or uncheck all of the checkboxes in the data cells.
Additionally selecting a checkbox can select a grid view row (depending on CGridView::selectableRows value) if selectableRows is null (default).
By default, the checkboxes rendered in data cells will have the values that are the same as the key values of the data model. One may change this by setting either name or value.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
checkBoxHtmlOptions | array | the HTML options for the checkboxes. | CCheckBoxColumn |
checked | string | a PHP expression that will be evaluated for every data cell and whose result will determine if checkbox for each data cell is checked. | CCheckBoxColumn |
cssClassExpression | string | a PHP expression that is evaluated for every data cell and whose result is used as the CSS class name for the data cell. | CGridColumn |
footer | string | the footer cell text. | CGridColumn |
footerHtmlOptions | array | the HTML options for the footer cell tag. | CCheckBoxColumn |
grid | CGridView | the grid view object that owns this column. | CGridColumn |
hasFooter | boolean | whether this column has a footer cell. | CGridColumn |
header | string | the header cell text. | CGridColumn |
headerHtmlOptions | array | the HTML options for the header cell tag. | CCheckBoxColumn |
htmlOptions | array | the HTML options for the data cell tags. | CCheckBoxColumn |
id | string | the ID of this column. | CGridColumn |
name | string | the attribute name of the data model. | CCheckBoxColumn |
selectableRows | integer | the number of rows that can be checked. | CCheckBoxColumn |
value | string | a PHP expression that will be evaluated for every data cell and whose result will be rendered in each data cell as the checkbox value. | CCheckBoxColumn |
visible | boolean | whether this column is visible. | CGridColumn |
Public Methods
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__construct() | Constructor. | CGridColumn |
__get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
__isset() | Checks if a property value is null. | CComponent |
__set() | Sets value of a component property. | CComponent |
__unset() | Sets a component property to be null. | CComponent |
asa() | Returns the named behavior object. | CComponent |
attachBehavior() | Attaches a behavior to this component. | CComponent |
attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
attachEventHandler() | Attaches an event handler to an event. | CComponent |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
detachBehavior() | Detaches a behavior from the component. | CComponent |
detachBehaviors() | Detaches all behaviors from the component. | CComponent |
detachEventHandler() | Detaches an existing event handler. | CComponent |
disableBehavior() | Disables an attached behavior. | CComponent |
disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
enableBehavior() | Enables an attached behavior. | CComponent |
enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getHasFooter() | Returns whether this column has a footer cell. This is determined based on whether footer is set. | CGridColumn |
hasEvent() | Determines whether an event is defined. | CComponent |
hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
hasProperty() | Determines whether a property is defined. | CComponent |
init() | Initializes the column. | CCheckBoxColumn |
raiseEvent() | Raises an event. | CComponent |
renderDataCell() | Renders a data cell. | CGridColumn |
renderFilterCell() | Renders the filter cell. | CGridColumn |
renderFooterCell() | Renders the footer cell. | CGridColumn |
renderHeaderCell() | Renders the header cell. | CGridColumn |
Protected Methods
Method | Description | Defined By |
---|---|---|
renderDataCellContent() | Renders the data cell content. | CCheckBoxColumn |
renderFilterCellContent() | Renders the filter cell content. | CGridColumn |
renderFooterCellContent() | Renders the footer cell content. | CGridColumn |
renderHeaderCellContent() | Renders the header cell content. | CCheckBoxColumn |
Property Details
the HTML options for the checkboxes.
a PHP expression that will be evaluated for every data cell and whose result will
determine if checkbox for each data cell is checked. In this expression, the variable
$row
the row number (zero-based); $data
the data model for the row;
and $this
the column object.
the HTML options for the footer cell tag.
the HTML options for the header cell tag.
the HTML options for the data cell tags.
the attribute name of the data model. The corresponding attribute value will be rendered in each data cell as the checkbox value. Note that if value is specified, this property will be ignored.
See Also
the number of rows that can be checked. Possible values:
- 0 - the state of the checkbox cannot be changed (read-only mode)
- 1 - only one row can be checked. Checking a checkbox has nothing to do with selecting the row
- 2 or more - multiple checkboxes can be checked. Checking a checkbox has nothing to do with selecting the row
- null - CGridView::selectableRows is used to control how many checkboxes can be checked. Cheking a checkbox will also select the row.
$.fn.yiiGridView.getChecked(containerID,columnID)
to retrieve the key values of the checked rows.
a PHP expression that will be evaluated for every data cell and whose result will be rendered
in each data cell as the checkbox value. In this expression, the variable
$row
the row number (zero-based); $data
the data model for the row;
and $this
the column object.
Method Details
public void init()
|
public function init()
{
if(isset($this->checkBoxHtmlOptions['name']))
$name=$this->checkBoxHtmlOptions['name'];
else
{
$name=$this->id;
if(substr($name,-2)!=='[]')
$name.='[]';
$this->checkBoxHtmlOptions['name']=$name;
}
$name=strtr($name,array('['=>"\\[",']'=>"\\]"));
if($this->selectableRows===null)
{
if(isset($this->checkBoxHtmlOptions['class']))
$this->checkBoxHtmlOptions['class'].=' select-on-check';
else
$this->checkBoxHtmlOptions['class']='select-on-check';
return;
}
$cball=$cbcode='';
if($this->selectableRows==0)
{
//.. read only
$cbcode="return false;";
}
elseif($this->selectableRows==1)
{
//.. only one can be checked, uncheck all other
$cbcode="$(\"input:not(#\"+this.id+\")[name='$name']\").prop('checked',false);";
}
else
{
//.. process check/uncheck all
$cball=<<<CBALL
$('#{$this->id}_all').live('click',function() {
var checked=this.checked;
$("input[name='$name']").each(function() {this.checked=checked;});
});
CBALL;
$cbcode="$('#{$this->id}_all').prop('checked', $(\"input[name='$name']\").length==$(\"input[name='$name']:checked\").length);";
}
$js=$cball;
$js.=<<<EOD
$("input[name='$name']").live('click', function() {
$cbcode
});
EOD;
Yii::app()->getClientScript()->registerScript(__CLASS__.'#'.$this->id,$js);
}
Initializes the column. This method registers necessary client script for the checkbox column.
protected void renderDataCellContent(integer $row, mixed $data)
| ||
$row | integer | the row number (zero-based) |
$data | mixed | the data associated with the row |
protected function renderDataCellContent($row,$data)
{
if($this->value!==null)
$value=$this->evaluateExpression($this->value,array('data'=>$data,'row'=>$row));
else if($this->name!==null)
$value=CHtml::value($data,$this->name);
else
$value=$this->grid->dataProvider->keys[$row];
$checked = false;
if($this->checked!==null)
$checked=$this->evaluateExpression($this->checked,array('data'=>$data,'row'=>$row));
$options=$this->checkBoxHtmlOptions;
$name=$options['name'];
unset($options['name']);
$options['value']=$value;
$options['id']=$this->id.'_'.$row;
echo CHtml::checkBox($name,$checked,$options);
}
Renders the data cell content. This method renders a checkbox in the data cell.
protected void renderHeaderCellContent()
|
protected function renderHeaderCellContent()
{
if($this->selectableRows===null && $this->grid->selectableRows>1)
echo CHtml::checkBox($this->id.'_all',false,array('class'=>'select-on-check-all'));
else if($this->selectableRows>1)
echo CHtml::checkBox($this->id.'_all',false);
else
parent::renderHeaderCellContent();
}
Renders the header cell content. This method will render a checkbox in the header when selectableRows is greater than 1 or in case selectableRows is null when CGridView::selectableRows is greater than 1.