Yii2.0 Gridview為某列增加屬性


我們知道GridView組件非常方便,會自動生成數據表格。table tr td神馬的全自動生成的。但是如果想定制化稍微有點難度。

比如想在某列td上應用樣式。

老寫法是這樣的

 <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'layout' => "{items}\n{pager}\n{summary}",
        'summary' => '<p class="summary">當前顯示第{begin} - {end}條,共{totalCount}條。</p>',
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'name',
            [
                // 看這里
                'attribute' => 'propertyValuesString',
                'format' => 'html',
                'value' =>  function ($model, $key, $index, $column){
                    return '<div class="limit-width">'. $model->propertyValuesString .'</div>';
                }
            ],    
            ......

這樣返回的html,td標簽里面會套一層<div class="limit-width"></div>。

如果才能將class應用在td上呢

查了源碼之后,可以這樣:

         <?= GridView::widget([
      .......
         'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'name',

            // 新增的代碼
            [
                'class' => 'yii\grid\Column',
                'contentOptions' => [
                    'class' => 'limit-width',
                ],
          // 或者
                'contentOptions' => ['style' => 'white-space: pre;'],
                'header' => '類目下的所有種類',
                'content' => function ($model, $key, $index, $column){
                    return $model->propertyValuesString;
                }
            ],

 

也就是說。該列我需要用到 yii/grid/Column類。該類有個contentOptions屬性。接收匿名函數或數組。數組就是屬性名和屬性值得鍵值對。渲染時該列包含一個th和多個td。th內容從header中取,td就是content。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM