Yii cgridview提供复选框参考

时间:2012-04-30 16:41:37

标签: yii

因为在表单中将CCheckBoxColumn添加到我的vgridview时,作为回报,我没有使用复选框数据的精确索引。所以我尝试添加'uncheckValue',但我无法将其链接到我的表的参考值。有没有办法访问当前行的这个值? (我的代码中的$ data->引用返回一个Undefined变量)。

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'gview',
'dataProvider'=>$dataProvider,
'columns'=>array(
    'client',
    'reference',
    array(
        'class'=>'CCheckBoxColumn',
        'id'=>'CB',
        'selectableRows'=>2,
        'checkBoxHtmlOptions'=>array(
            'uncheckValue'=>$data->reference, ),

    )),));

Tks任何人都可以把我放在路上(如果有的话......)

1 个答案:

答案 0 :(得分:1)

我终于找到一种方法是扩展CCheckBoxColumn。 在此代码中,我可以访问$ data。现在我的表单返回复选框,其“名称”作为我表的“参考”列,因此我可以进行进一步的批处理。 uncheckValue隐藏字段不合适,因为它只为未经检查的字段(!)提供索引。

我相信这段代码不应该留在视野中,而是在扩展中...... 任何评论仍然欢迎....

Yii::import('zii.widgets.grid.CCheckBoxColumn');
class LIndexCheckBoxColumn extends CCheckBoxColumn {

public $linkId; 

public 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'];
    $varLink=$this->linkId;
    $name=$data->$varLink;
    unset($options['name']);
    $options['value']=$value;
    $options['id']=$this->id.'_'.$row;
    echo CHtml::checkBox($name,$checked,$options);
}

    }

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'client',
        'reference',
        array(
            'class'=>'LIndexCheckBoxColumn',
            'id'=>'cb',
            'selectableRows'=>2,
            'linkId'=>'reference',
    )),));