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'
- )
- ) );
- ?>
效果图如下: