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

问题描述:

我是yii2的新手,并在我的项目中使用yii2 gridview。是否有可能在列标题附近的每列中都有复选框? 这里是代码如何获取列标题的每个单元格中的复选框,在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, 
    ]); 
    ?> 

这里是您的解决方案。

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

太谢谢你了...工程.... – Goli

最好的办法是创建自己的DataColumn类和一个复选框头设置的默认值。

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

    public $header = "somehtml"; 

} 
?> 

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

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

Yii2 Guide: DataColumn