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

你可能感兴趣的:(ListView)