yii CListView中使用CArrayDataProvider自定義數組作爲數據

在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的自定義數組作爲數據方式,留言,我下次專門貼出。

這篇文字國內暫時沒有中文的,我也是搜索了很多國外的英文資料才整理出來。請各位轉載的時候註明出處。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章