CListView 可以用來顯示列表,CListView 支持使用自定義的 View 模板顯示列表的的記錄,因此可以非常靈活的顯示數據的表,這點有點像 Android 的 ListView:-)。
CListView 支持分頁和排序,分頁和排序支持使用 AJAX 實現從而可以提高頁面的響應性能。CListView 的使用需要通過 DataProvider,通常是使用 CActiveDataProvider。
本例修改 Yii Framework 開發(fā)教程(26) 數據庫-Active Record 示例,不過為了顯示分頁,我們使用 Customer 數據庫表,每頁顯示 10 條記錄。
修改缺省的視圖 protected/views/site/index.php,使用 ListView 組件。
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'ajaxUpdate'=>false,
'template'=>'{sorter}{pager}{summary}{items}{pager}',
'itemView'=>'_view',
'pager'=>array(
'maxButtonCount'=>'7',
),
'sortableAttributes'=>array(
'FirstName',
'LastName',
'Country',
),
)); ?>
參數 template 配置頁面顯示的模板,支持的參數有 {summary}, {sorter}, {items} 和{pager},分別對應于 ListView 的匯總,排序,列表項,分頁控制。 參數 itemView 指明每個列表項對應的 View 顯示。本例使用 site/_view.php ,定義如下:
<div class="item">
<h3><?php echo CHtml::encode($data->FirstName . ' ' . $data->LastName);?></h3>
<b><?php echo CHtml::encode($data->getAttributeLabel('Company')); ?>:</b>
<?php echo CHtml::encode($data->Company); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('Address')); ?>:</b>
<?php echo Yii::app()->format->formatUrl($data->Address); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('Country')); ?>:</b>
<?php echo CHtml::encode($data->Country); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('Email')); ?>:</b>
<?php echo Yii::app()->format->formatEmail($data->Email); ?>
<br />
</div>
然后修改 SiteController 的 indexAction 方法:
public function actionIndex()
{
$dataProvider=new CActiveDataProvider('Customer', array(
'pagination'=>array(
'pageSize'=>10,
'pageVar'=>'page',
),
'sort'=>array(
'defaultOrder'=>'Lastname',
),
));
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}
創(chuàng)建 CActiveDataProvider,并配置分頁和排序參數(pagination和sort),指明 ActiveDataProvider 取自 Customer ActiveRecord.
顯示結果如下:
http://wiki.jikexueyuan.com/project/yii-development-tutorial/images/30.1.jpg" alt="picture30.1" />
本例下載