yii CListView是非常灵活的显示控件,以下较全面的定义了所有可配置项:
更多功能请见zii.widgets.CListView参考手册
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'template'=>'<div class="summary">{summary}</div><div class="sorter">{sorter}</div><div class="list">{items}</div><div class="pager">{pager}</div>',
//template是整个CListView的模板:
//{summary}的位置会显示基本描述,可修改summaryText项来设置描述的模板
//{sorter}的位置会显示更改排序方式的按钮,需要定义sortableAttributes项来描述哪一属性是可排序的
//{items}的位置会显示列表,列表中每一项的格式来自itemView项定义的文件
//{pager}的位置会显示分页器,可通过定义pager项来设定分页器的显示方式
'summaryCssClass'=>'summary_container',//定义summary的div容器的class
'summaryText'=>'共{count}条,当前页显示第{start}-{end}条',
//定义summary的显示内容,其中可用到以下变量:
//{start}表示本页的第一条是全部中的第几条
//{end}表示本页最后一条是全部中的第几条
//{count}表示全部共几条
//{page}表示当前页码
//{pages}表示总页数
'sortableAttributes'=>array('title','create_time'),//定义可排序的属性
'sorterCssClass'=>'sorter_container',//定义sorter的div容器的class
'sorterHeader'=>'更改排序:',//定义的文字显示在sorter可排序属性的前面
'sorterFooter'=>'',//定义的文字显示在sorter可排序属性的后面
'pagerCssClass'=>'pager_container',//定义pager的div容器的class
'pager'=>array(
'class'=>'CLinkPager',//定义要调用的分页器类,默认是CLinkPager,需要完全自定义,还可以重写一个,参考我的另一篇博文:http://blog.sina.com.cn/s/blog_71d4414d0100yu6k.html
'cssFile'=>false,//定义分页器的要调用的css文件,false为不调用,不调用则需要亲自己css文件里写这些样式
'header'=>'转往分页:',//定义的文字将显示在pager的最前面
'footer'->'',//定义的文字将显示在pager的最后面
'firstPageLabel'=>'首页',//定义首页按钮的显示文字
'lastPageLabel'=>'尾页',//定义末页按钮的显示文字
'nextPageLabel'=>'下一页',//定义下一页按钮的显示文字
'prevPageLabel'=>'前一页',//定义上一页按钮的显示文字
//关于分页器这个array,具体还有很多属性,可参考CLinkPager的API
),
));下面是示例:

<?php
$this->widget ( 'zii.widgets.CListView', array (
'dataProvider' => $dataProvider,
'itemView' => '_index/_index_view',
'template' => "{items}\n{pager}",
'itemsCssClass' => 'table table-striped table-bordered table-hover text-center th_center',
'pagerCssClass' => 'widget-foot',
'pager' => array (
'class' => 'CLinkPager',
'nextPageLabel' => '下一页',
'prevPageLabel' => '上一页',
'firstPageLabel' => '首页',
'lastPageLabel' => '末页',
'htmlOptions' => array (
'class' => 'pagination'
),
'header' => '',
'hiddenPageCssClass' => 'disabled',
'selectedPageCssClass' => 'active'
)
) );
?>由于CListView默认div标签显示的,如果想使用table标签显示,请重写CListView类,下面是示例代码:
1,新建MyCListView文件/protected/components/MyCListView.php
<?php
Yii::import ( 'zii.widgets.CListView' );
class MyCListView extends CListView {
public $preItemsTag = '';
public $postItemsTag = '';
public $itemsThead=array();
public function renderItems() {
$starHtml=CHtml::openTag ( $this->itemsTagName, array (
'class' => $this->itemsCssClass
) ) . "\n";
$data = $this->dataProvider->getData ();
$data_count=($n = count ( $data ));
if ($data_count > 0) {
$itemsThead=$this->itemsThead;
$theadHtml='<thead><tr>';
foreach ($itemsThead as $i_key=>$i_value){
$theadHtml.='<th width='.$i_value.'>'.$i_key.'</th>';
}
$theadHtml.='</tr></thead>';
$starHtml.=$theadHtml;
}
echo $starHtml;
if ($data_count > 0) {
$owner = $this->getOwner ();
$viewFile = $owner->getViewFile ( $this->itemView );
$j = 0;
foreach ( $data as $i => $item ) {
$data = $this->viewData;
$data ['index'] = $i;
$data ['data'] = $item;
$data ['widget'] = $this;
$owner->renderFile ( $viewFile, $data );
if ($j ++ < $n - 1)
echo $this->separator;
}
} else
$this->renderEmptyText ();
echo CHtml::closeTag ( $this->itemsTagName );
}
}2,修改视图文件
<?php
$this->widget ( 'application.components.MyCListView', array (
'dataProvider' => $dataProvider,
'itemView' => '_index/_index_view',
'template' => "{items}\n{pager}",
'itemsTagName' => 'table',
'itemsThead' => array (
'ID' => '5%',
'姓名' => '10%',
'手机' => '10%',
'公司类型' => '10%',
'操作' => '10%'
),
'itemsCssClass' => 'table table-striped table-bordered table-hover text-center th_center',
'pagerCssClass' => 'widget-foot',
'pager' => array (
'class' => 'CLinkPager',
'nextPageLabel' => '下一页',
'prevPageLabel' => '上一页',
'firstPageLabel' => '首页',
'lastPageLabel' => '末页',
'htmlOptions' => array (
'class' => 'pagination'
),
'header' => '',
'hiddenPageCssClass' => 'disabled',
'selectedPageCssClass' => 'active'
)
) );
?>效果图如下:
