问:如何在cgridview上查看一些复选框?
状态:我已经使用复选框完成了gridview。但我不知道如何预先检查一些复选框。 $ current_reviewers是一个数组。我想与$ current_reviewers和复选框匹配以预先检查gridview。
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'acc-recei-grid',
'dataProvider'=>$model->search_reviewerlist(),
'filter'=>$model,
'columns'=>array(
array(
'class' => 'CCheckBoxColumn',
'selectableRows' => 2,
'checkBoxHtmlOptions' => array(
'name' => 'userids[]',
),
'value'=>'$data->id',
'checked'=>'(in_array($data->id, $current_reviewers) ? 1 : ""',
),
'username',
array(
'type'=>'raw',
'value'=>'$data->id',
//'filter'=>array('style'=>'visible:none'),
//'headerHtmlOptions'=>array('style'=>'width:0px; display:none; border:none; textdecoration:none'),
'htmlOptions'=>array('style'=>'display:none; border:none;', 'class'=>'user-id'),
//'header'=>false,
//'filter'=>false,
),
),
)); ?>
答案 0 :(得分:1)
问题在于$current_reviewers
变量,它不能在作为checked
值传递的php表达式中访问。为此,您可以使用匿名函数并使用外部变量,使用use
关键字:
'checked'=>function($data, $row) use ($current_reviewers){
return in_array($data->id, $current_reviewers);
}
检查use
keyword的使用情况。
答案 1 :(得分:0)
试试这个:
array(
'id'=>'id',
'class'=>'CCheckBoxColumn',
'selectableRows' => '50',
'checked'=>'($data->id==$current_reviewers)?(1):(0)',
),