CCheckBoxColumn


zii.widgets.grid
继承 class CCheckBoxColumn » CGridColumn » CComponent
源自 1.1
版本 $Id: CCheckBoxColumn.php 3437 2011-11-07 15:03:58Z mdomba $
源码
CCheckBoxColumn表示表格视图中列的复选框。

CCheckBoxColumn支持不选(只读),单选和多选。 该模型是根据selectableRows来确定的。在多选模式下,标题元件将显示一个额外的复选框, 点击选中或者不选数据元件中的所有复选框。

Additionally selecting a checkbox can select a grid view row (depending on CGridView::selectableRows value) if selectableRows is null (default).

默认情况下,在数据元件呈现的复选框, 将跟数据模型中的关键值相同。可以在name或者 value中设置或者修改。

公共属性

属性 类型 描述 定义在
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 计算PHP表达式中每一个数据元件, 其结果作为这个数据元件的CSS类名。在这个表达式中, 变量$row是行号(零基础); $data是该行的数据模型; $this是列的对象。 CGridColumn
footerHtmlOptions array the HTML options for the footer cell tag. CCheckBoxColumn
grid CGridView 拥有此列的表格视图对象。 CGridColumn
hasFooter boolean 确定此列是否有底部元件。 这决定基于是否footer已设置。 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 数据模型的属性名称。相应的属性值将呈现在每个复选框的值的数据元件中。 请注意假如value指定,此属性将被忽略。 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 此列是否可见。默认为true。 CGridColumn

公共方法

方法 描述 定义在
__call() 如果类中没有调的方法名,则调用这个方法。 CComponent
__construct() 构造方法。 CGridColumn
__get() 返回一个属性值、一个事件处理程序列表或一个行为名称。 CComponent
__isset() 检查一个属性是否为null。 CComponent
__set() 设置一个组件的属性值。 CComponent
__unset() 设置一个组件的属性为null。 CComponent
asa() 返回这个名字的行为对象。 CComponent
attachBehavior() 附加一个行为到组件。 CComponent
attachBehaviors() 附加一个行为列表到组件。 CComponent
attachEventHandler() 为事件附加一个事件处理程序。 CComponent
canGetProperty() 确定属性是否可读。 CComponent
canSetProperty() 确定属性是否可写。 CComponent
detachBehavior() 从组件中分离一个行为。 CComponent
detachBehaviors() 从组件中分离所有行为。 CComponent
detachEventHandler() 分离一个存在的事件处理程序。 CComponent
disableBehavior() 禁用一个附加行为。 CComponent
disableBehaviors() 禁用组件附加的所有行为。 CComponent
enableBehavior() 启用一个附加行为。 CComponent
enableBehaviors() 启用组件附加的所有行为。 CComponent
evaluateExpression() 计算一个PHP表达式,或根据组件上下文执行回调。 CComponent
getEventHandlers() 返回一个事件的附加处理程序列表。 CComponent
getHasFooter() 返回确定此列是否有底部元件。 这决定基于是否footer已设置。 CGridColumn
hasEvent() 确定一个事件是否定义。 CComponent
hasEventHandler() 检查事件是否有附加的处理程序。 CComponent
hasProperty() 确定属性是否被定义。 CComponent
init() 初始化列。 CCheckBoxColumn
raiseEvent() 发起一个事件。 CComponent
renderDataCell() 渲染一个数据元件。 CGridColumn
renderFilterCell() 渲染过滤器元件。 CGridColumn
renderFooterCell() 渲染底部元件。 CGridColumn
renderHeaderCell() 渲染头部元件。 CGridColumn

受保护方法

方法 描述 定义在
renderDataCellContent() 呈现的数据元件的内容。 CCheckBoxColumn
renderFilterCellContent() Renders the filter cell content. CGridColumn
renderFooterCellContent() Renders the footer cell content. CGridColumn
renderHeaderCellContent() 呈现的头部元件的内容。 CCheckBoxColumn

属性详细

checkBoxHtmlOptions 属性
public array $checkBoxHtmlOptions;

the HTML options for the checkboxes.

checked 属性 (可用自 v1.1.4)
public string $checked;

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.

footerHtmlOptions 属性
public array $footerHtmlOptions;

the HTML options for the footer cell tag.

headerHtmlOptions 属性
public array $headerHtmlOptions;

the HTML options for the header cell tag.

htmlOptions 属性
public array $htmlOptions;

the HTML options for the data cell tags.

name 属性
public string $name;

数据模型的属性名称。相应的属性值将呈现在每个复选框的值的数据元件中。 请注意假如value指定,此属性将被忽略。

参见

selectableRows 属性 (可用自 v1.1.6)
public integer $selectableRows;

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.
You may also call the JavaScript function $.fn.yiiGridView.getChecked(containerID,columnID) to retrieve the key values of the checked rows.
value 属性
public string $value;

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.

方法详细

init() 方法
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);
}

初始化列。 此方法是注册客户端脚本复选框列所必需的。

renderDataCellContent() 方法
protected void renderDataCellContent(integer $row, mixed $data)
$row integer 行号(零基础)
$data mixed 此行相关的数据
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);
}

呈现的数据元件的内容。 这种方法呈现在数据元件的复选框中。

renderHeaderCellContent() 方法
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();
}

呈现的头部元件的内容。 这个方法将会呈现在头部的复选框当selectableRows大于1或者在 selectableRows为空和CGridView::selectableRows大于1的情况下。