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(

'dataProvider'=>$dataProvider,

'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"]))',

            ),

        ),

    ));