如何使用gridview在单行中显示多行

时间:2013-01-29 11:49:53

标签: yii yii-components cgridview

我想像magento一样显示网格视图 http://demo.magentocommerce.com/catalog/category/view/s/cellphones/id/8/

这里我们可以看到多个项目显示在同一行...... 在上面的链接中,我们可以看到每行显示3个项目(行)。

目前我正在使用此代码,并且每行显示使用此单行

<?php
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'enablePagination'=>false,
    'columns'=>array(
        'brand',
        array(
          'name'=>'model',
            'header'=>'Model',
            'type'=>'raw',
            'value'=>'$data->model.($data->marketing_name?" (".$data->marketing_name.") ":"")'
        ),
        array(
            'name'=> 'platform',
            'header'=>'Platform',
            'type'=>'raw',
            'value'=>'$data->platform->platform." ".$data->platform->platform_version'
        ),
        array(
            'name'=>'add',
            'header'=>'Action',
            'type'=>'html',
            'value'=>  'CHtml::link("Add To My device", Yii::app()->createUrl("/site/add_device/id/".$data->id))',
        )
    ),
));
?>

1 个答案:

答案 0 :(得分:0)

CGridView始终在单独的行中显示每个项目。为了获得更大的灵活性(例如并排显示三个项目),您必须切换到使用CListView,但这意味着您必须自己做更多事情。

CListView具有itemView属性,您必须设置该属性并使用指定的视图呈现列表中的每个项目。结合templateitemsTagName属性,您可以完全自定义列表生成的HTML。

要显示每行三个项目,您可以使用任何通用CSS技术,例如给每个项目display: inline-block和固定宽度为容器宽度的1/3;这取决于您希望如何实现布局。