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

CArrayDataProvider类手册:

http://www.yiichina.com/api/CArrayDataProvider

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

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

在controller里面

[php] view plaincopy
$data = array(
0=>array('id'=>1,'name'=>'合格率'),
1=>array('id'=>2,'name'=>'不合格率'),
); [php] view plaincopy
$repdp = new CArrayDataProvider($data,array(
'keyField'=>'id',
'sort'=>array(
'attributes'=>array('id','name'),
//'defaultOrder'=>array('id' => false),
), )); return $repdp; 在VIEW里面
[php] view plaincopy
<?php
$this->widget('zii.widgets.CListView', array(
'id'=>'AllDayAnalysisPercent-grid',
'dataProvider'=>$AllDayAnalysisPercent,
'itemView'=>'DayAnalysis_view', ));?>
我这里使用了一个itemView的模板。模板如下:
[php] view plaincopy
<tr>
<th><?php echo CHtml::encode($data['name']); ?></th>
</tr>
这里要特别注意!我一开始是用$data->name这样的格式,其实这个格式是复制yii自带模板的格式,但是系统会出错,我后来搜索了很大国外的资料,发下我这个itemView的模板里面其实写错了,应该是$data['name']这样的格式!因为是自定义的数组,应该是php原生数组的格式,而不是yii的那种格式,这个跟从数据库读取出来的方式不同。要特别注意的。
最后CGridView的使用自定义数组作为数据的方式也跟这个是一样的。如果你不懂CGridView的自定义数组作为数据方式,留言,我下次专门贴出。 这篇文字国内暂时没有中文的,我也是搜索了很多国外的英文资料才整理出来。请各位转载的时候注明出处。

From: http://blog.csdn.net/panxiong91/article/details/10510281

上一篇:用C#对ADO.NET数据库完成简单操作


下一篇:实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用