如何在YII中更改GridView列大小?

时间:2013-12-27 11:26:28

标签: php gridview yii width

我正在尝试更改我的GridView列宽。这是我的代码:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'prefixs-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        array(
            'name' => 'id',
            'header' => 'No.',
            'htmlOptions' => array('class' => 'center'),
        ),
        array(
            'name' => 'pfx',
            'htmlOptions' => array('width' => 30),
        ),
        array(
            'class' => 'CButtonColumn',
        ),
    ),
)); ?>

当我跑步&#39; pfx&#39;列宽必须更改为30,但宽度相同。我怎么能改变列的宽度?有什么想法吗?

5 个答案:

答案 0 :(得分:6)

如果您不想使用单独的CSS定义,则应执行以下操作:

'htmlOptions' => array('style' => 'width: 30px;'),
'filterHtmlOptions' => array('style' => 'width: 30px;'),

答案 1 :(得分:1)

'columns' => [      
    [
         'headerOptions' => ['width' => '150'],
         'attribute' => 'name',
         'format' => 'raw',
          'value' => 'name'
    ],
]

答案 2 :(得分:0)

我注意到标签中的cgridview有一个id属性id="table-name_c0" id="table-name_c1"等等你可以挂钩到这个和.filters类的过滤器宽度。 e.g。

#table-name table-name_c0 {
    width: 30px;
}

#table-name .filters:nth(0) {
    width:30px;
} 

其中c0和:nth(0)是相同的数字。 它有点hacky但你想要实现的也是有点hacky imho

答案 3 :(得分:0)

有多种方法可以解决这个问题。

您可以加宽单元格的内容(单个行的单元格):

$columns[] = array(
    'header'=>'Name',
    'value'=>'$data["name"]',
    'htmlOptions'=>array('style'=>'width: 150px')
);

有时您可能想要扩大列标题而不是单个行的单元格:

$columns[] = array(
    'header'=>'Name',
    'value'=>'$data["name"]',
    'headerHtmlOptions'=>array('style'=>'width: 150px')
);

扩展标题是首选选项,但即使您这样做,有时也无法按预期工作。

如果是这种情况,您可以采用我个人喜欢的方式并扩大标题单元格的内容。扩展也将由它下面的行继承。

$columns[] = array(
    'header'=>'<div style="width:150px;">Name</div>',
    'value'=>'$data["name"]',
);

答案 4 :(得分:0)

只需添加

'contentOptions' =>['style' => 'width:30px'],

- 例如:

'columns' => [
        [
            'attribute' => 'product.name',
            'contentOptions' =>['style' => 'width:30px'],
        ],

这应该可以做到!