Yii cgridview提供参考复选框

Yii cgridview提供参考复选框,yii,Yii,因为在表单中将CCheckBoxColumn添加到我的vgridview时,作为回报,我没有用于处理复选框数据的精确索引。因此,我尝试添加“uncheckValue”,但无法将其链接到表的参考值。是否有方法访问当前行的此值?(代码中的$data->reference返回一个未定义的变量) Tks任何人都可以让我上路(如果有…我终于找到了一种方法,那就是扩展CCheckBoxColumn。 在这段代码中,我可以访问$data。现在,我的表单返回复选框,其“name”作为我的表的“reference

因为在表单中将CCheckBoxColumn添加到我的vgridview时,作为回报,我没有用于处理复选框数据的精确索引。因此,我尝试添加“uncheckValue”,但无法将其链接到表的参考值。是否有方法访问当前行的此值?(代码中的$data->reference返回一个未定义的变量)


Tks任何人都可以让我上路(如果有…

我终于找到了一种方法,那就是扩展CCheckBoxColumn。 在这段代码中,我可以访问$data。现在,我的表单返回复选框,其“name”作为我的表的“reference”列,因此我可以进行进一步的批处理。 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',
    )),));

我终于找到了一种方法,就是扩展CCheckBoxColumn。 在这段代码中,我可以访问$data。现在,我的表单返回复选框,其“name”作为我的表的“reference”列,因此我可以进行进一步的批处理。 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',
    )),));

我不相信有一种方法可以在不亲自呈现复选框的情况下做到这一点(一个“原始”
CDATA列
)。Tks有关信息,我将尝试探索建议的技巧。我在其他地方也读过,有一种Ajax方法可以读取复选框状态。DCoder解决方案更好,但我不难找到原始数据列值的正确语法,它应该是:“\”\“我认为没有一种方法可以在不亲自呈现复选框的情况下做到这一点(“原始”
CDATA列
).Tks有关信息,我将尝试探索建议的技巧。我在其他地方也读过,有一种Ajax方法可以读取复选框状态。DCoder解决方案更好,但我不难找到原始数据列值的正确语法,它应该是:'\'\''