天天看點

yii裡dao資料ClistView使用

yii裡面dao資料導出的資料給ClistView使用

測試表tbl_student

字段id,username,sex,age 

action裡面測試

*****************************************************************

$sql = 'select * from tbl_student';

$conn = Yii::app()->db; 

$rawData = $conn->createCommand($sql)->queryAll(); 

/*

這裡後面的array參數是可選,用來設定排序和分頁情況

$dataProvider= new CArrayDataProvider($rawData, array(

    'id'=>'id',

    'sort'=>array(

        'attributes'=>array(

            'id','username','age','sex'

        ), ),

    'pagination'=>array(

        'pageSize'=>10,

    ),));

*/

$dataProvider= new CArrayDataProvider($rawData);

//這裡是原來的active record模型

//$dataProvider=new CActiveDataProvider('Student');

$this->render('index',array(

'dataProvider'=>$dataProvider,

));

***************************************************************** 

index.php頁面如下:

$this->widget('zii.widgets.CListView', array(

'itemView'=>'_view',

)); 

理論上就可以了,但是實際上能看到,我們要的資料看不到,問題在CListView的itemView裡面

gii幫我們生成的一般是這樣:echo CHtml::encode($data->getAttributeLabel('id'));

用ar模型在這裡下斷點的時候,就能看到$data是一個object,而我們自己采用sql來查詢的話,沒有object的概念,$data是array,

是以,我們隻要改成echo CHtml::encode($data['id']);

類似這樣把itemView修改一下就完成了自己sql查詢出來的資料到yii的CListView

很可惜,CDetailView沒有itemView這個屬性,暫時沒研究出來怎麼簡單點把sql出來的資料放進他們裡面去,

CGridView的dataProvider隻要是實作了IDataProvider就可以,是以也可以實作。

轉自:http://hi.baidu.com/new/wueryqwheb

CArrayDataProvider自定義資料給CGridView

來自http://yiiblog.info/blog/2011/04/carraydataprovider-in-yii-code-demo 

   $rawData = array(array('id'=>'1'),array('id'=>'2'));

    $dataProvider=new CArrayDataProvider($rawData, array(

        'keyField'=>'id',

        'pagination'=>array(

            'pageSize'=>10,

        ),

    ));

    $this->widget('zii.widgets.grid.CGridView', array(

        'id'=>'cart-grid',

        'dataProvider'=>$dataProvider,

        'columns'=>array(

            'id',

            array(

                'class'=>'CButtonColumn',

                'viewButtonUrl'=>'Yii::app()->controller->createUrl("view",array("id"=>$data["id"]))',

                'updateButtonUrl'=>'Yii::app()->controller->createUrl("update",array("id"=>$data["id"]))',

                'deleteButtonUrl'=>'Yii::app()->controller->createUrl("delete",array("id"=>$data["id"]))',