在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;
<?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的自定義數組作爲數據方式,留言,我下次專門貼出。
這篇文字國內暫時沒有中文的,我也是搜索了很多國外的英文資料才整理出來。請各位轉載的時候註明出處。