如何获取列标题的每个单元格中的复选框,在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,
]);
?>
答
最好的办法是创建自己的DataColumn类和一个复选框头设置的默认值。
<?php
class myDataColumn extends yii\grid\DataColumn {
public $header = "somehtml";
}
?>
然后在您的gridview设置属性dataColumnClass
与您的自定义dataColumn的名称。注意只有没有定义属性的属性才会使用你的类。 (ActionColumn,例如,将不会显示您的自定义标题)
如果您需要的不仅仅是一个简单的固定html,您还可以重写方法renderHeaderCellContent
甚至与列的标签连接。
太谢谢你了...工程.... – Goli