如何在列标题的每个单元格中获取复选框,在yii2 gridview中?

时间:2017-10-28 07:11:12

标签: gridview yii2

我是yii2的新手,在我的项目中使用yii2 gridview ..是否可以在列标题附近的每列中设置复选框? 这是代码

<?php 

    $gridColumns = [
                     ['class' => 'yii\grid\SerialColumn'],
                     ['class' => 'yii\grid\CheckboxColumn'],  

                    'name', //checkbox then 'name'
                    'company_mail', //checkbox then 'company_mail' for each column
                    'no_employees',
                    'email:email', 
                    .
                    .
                    .];
            echo GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => $gridColumns,
    ]); 
    ?>

2 个答案:

答案 0 :(得分:0)

最好的方法是创建自己的dataColumn类,并使用复选框设置标题的默认值。

<?php 
class myDataColumn extends yii\grid\DataColumn {

    public $header = "somehtml";

}
?>

然后在gridview中设置属性dataColumnClass,其中包含自定义dataColumn的名称。请注意,只有那些没有定义class属性的属性才会使用您的类。 (例如,ActionColumn不会显示您的自定义标题)

如果您需要的不仅仅是一个简单的固定html,您可以覆盖方法renderHeaderCellContent,甚至可以与列的标签连接。

请参阅Yii2 Guide: DataColumn

答案 1 :(得分:0)

这是您的解决方案。

<?php 

    $gridColumns = [
                        ['class' => 'yii\grid\SerialColumn'],
                        ['class' => 'yii\grid\CheckboxColumn'],
                        [
                            'header' => '<input type="checkbox"> Name',
                            'attribute' => 'name',
                        ],
                        [
                            'header' => '<input type="checkbox"> Company Email',
                            'attribute' => 'company_mail',
                        ],  
                        'no_employees',
                        'email:email', 


                   ];

    echo GridView::widget([
                'dataProvider' => $dataProvider,
                'filterModel' => $searchModel,
                'columns' => $gridColumns,
            ]); 
?>

如果你想在列的所有行上复选框,那么你的代码应该是

<?php 

    $gridColumns = [
                        ['class' => 'yii\grid\SerialColumn'],
                        ['class' => 'yii\grid\CheckboxColumn'],
                        [
                            'header' => '<input type="checkbox"> Name',
                            'attribute' => 'name',
                        ],
                        [
                            'header' => '<input type="checkbox"> Company Email',
                            'attribute' => 'company_mail',
                            'value' => function ($model) {                      
                                    return '<input type="checkbox" name="YOURCHECKBOXNAME"> '.$model->company_mail;
                            },
                        ], // this will generate checkbox at header as well as each rows of this column
                        'no_employees',
                        'email:email', 


                   ];

    echo GridView::widget([
                'dataProvider' => $dataProvider,
                'filterModel' => $searchModel,
                'columns' => $gridColumns,
            ]); 
?>