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

原文地址:https://www.cnblogs.com/imxiu/p/3464007.html