yii CListView中使用CArrayDataProvider自定义数组作为数据

来源:互联网 发布:手机会员软件 编辑:程序博客网 时间:2024/06/03 14:51

在yii中无论是CListView还是CGridView,对应数据的传值都是从后台完成的,有时候我们不是从数据库读取,而是自定义一些数组来作为表格的数据。其实Yii在后台对应数组处理有2个好函数的,一个是CActiveDataProvider,另外一个是CArrayDataProvider。从英文的字面意思很容易理解,CActiveDataProvider是用来给从数据库读取的那些数据然后转换成数组;CArrayDataProvider是把自定义的数组转换为可以在ClistView可以使用的格式。

贴上代码,不解释了。忙项目。

在controller里面

$data = array(0=>array('id'=>1,'name'=>'合格率'),1=>array('id'=>2,'name'=>'不合格率'),);

$repdp = new CArrayDataProvider($data,array( 'keyField'=>'id','sort'=>array(                    'attributes'=>array('id','name'),                    //'defaultOrder'=>array('id' => false),            ),            ));return $repdp;


在VIEW里面

<?php       $this->widget('zii.widgets.CListView', array(      'id'=>'AllDayAnalysisPercent-grid',      'dataProvider'=>$AllDayAnalysisPercent,      'itemView'=>'DayAnalysis_view',    ));?> 
我这里使用了一个itemView的模板。模板如下:

<tr><th><?php echo CHtml::encode($data['name']); ?></th></tr>
这里要特别注意!我一开始是用$data->name这样的格式,其实这个格式是复制yii自带模板的格式,但是系统会出错,我后来搜索了很大国外的资料,发下我这个itemView的模板里面其实写错了,应该是$data['name']这样的格式!因为是自定义的数组,应该是php原生数组的格式,而不是yii的那种格式,这个跟从数据库读取出来的方式不同。要特别注意的。

最后CGridView的使用自定义数组作为数据的方式也跟这个是一样的。如果你不懂CGridView的自定义数组作为数据方式,留言,我下次专门贴出。

这篇文字国内暂时没有中文的,我也是搜索了很多国外的英文资料才整理出来。请各位转载的时候注明出处。