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

如何在Yi2 gridview中获取列标题的每个单元格中的复选框?,gridview,yii2,Gridview,Yii2,我是yii2新手,在我的项目中使用yii2 gridview。。是否可以在列标题附近的每列中都有复选框?? 这是代码 <?php $gridColumns = [ ['class' => 'yii\grid\SerialColumn'], ['class' => 'yii\grid\CheckboxColumn'], 'name', //

我是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,
    ]); 
    ?>

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

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

    public $header = "somehtml";

}
?>

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

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


请参见

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

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

    public $header = "somehtml";

}
?>

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

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

请参见

这是您的解决方案

<?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,
            ]); 
?>

这是您的解决方案

<?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,
            ]); 
?>