2017-02-22 135 views
2

我想在GridView中使用列索引在widget中显示yii2 gridview中的数据:widget()。我在数据库中有大量的字段(大约40),并且需要显示所有这些字段,并且想要为每个TH和TD添加与字段名称相同的CSS类名称。 我知道我可以做到这一点使用下面的代码,但我必须写很多代码:如何添加css类到yii2中的每个TH和TD GridView

'columns' => [ 
     [ 
      'attribute' => 'ID', 
      'contentOptions' => ['class' => 'ID'], 
      'headerOptions' => ['class' => 'ID'] 
     ], 
     [ 
      'attribute' => 'Insured', 
      'contentOptions' => ['class' => 'Insured'], 
      'headerOptions' => ['class' => 'Insured'] 
     ], 

     . 
     . 

     [ 
      'attribute' => 'Phone', 
      'contentOptions' => ['class' => 'Phone'], 
      'headerOptions' => ['class' => 'Phone'] 
     ] 
], 

有没有使用一些回调函数或者别的什么,任何其他有效的方法?

回答

3

设置自定义列类作为默认在你的GridView:

'dataColumnClass' => 'name\space\for\MyDataColumn', 

创建MyDataColumn类,它扩展yii\grid\DataColumn

里面添加:

public function init() 
{ 
    parent::init(); 
    if (!empty($this->attribute) { 
     $this->headerOptions = array_merge($this->headerOptions, [ 
      'class' => $this->attribute, 
     ]); 
     $this->contentOptions = array_merge($this->contentOptions, [ 
      'class' => $this->attribute, 
     ]); 
    } 
} 
+0

感谢@Bizley,它的工作。你能否介绍一下关于'parent :: init();' –

+0

'init()'方法是在对象用给定配置初始化后在构造函数的末尾被调用的。当你重载这个方法时,建议调用父进程的init()。 – Bizley

相关问题