CGridView和dataProvider问题?


控制器;$sql="select pl_id,pl_content,pl_time,news_title,username from news join pinglun on news_id=pinglun.pl_int  join users on id=pl_person order by pl_id desc";

   	    $datas=Yii::app()->db->createCommand($sql)->queryAll();

   	    $dataProvider = new CActiveDataProvider($datas);

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

			'dataProvider'=>$dataProvider,

		));




视图;<?php

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

	 'dataProvider'=>$dataProvider,

	'pager'=>array(              //通过pager设置样式   默认为CLinkPager

                    'prevPageLabel'=>'上一页',

                    'firstPageLabel'=>'首页',  //first,last 在默认样式中为{display:none}及不显示,通过样式{display:inline}即可

                    'nextPageLabel'=>'下一页',

                    'lastPageLabel'=>'末页',

                    'header'=>'',

                      ),

              'ajaxUpdate'=>false, 

	'columns'=>array(

	  array(             

             'selectableRows' => 2,

             'footer' => '<input type="checkbox" id="cbCheckAll" onclick="checkAll(this);"/><label for="cbCheckAll">全选</label>',

             'class' => 'CCheckBoxColumn',

             'headerHtmlOptions' => array('width'=>'50px'),

             'checkBoxHtmlOptions' => array('name' => 'selectdel[]')          

     ),

       array(

			'name'=>'编号',

			'type'=>'raw',

			'value'=>$data['pl_id'],

		),

		array(

			'name'=>'评论者',

			'type'=>'raw',

			'value'=>$data['username'],

			

		),

		array(

			'name'=>'评论内容',

			'type'=>'raw',

			'value'=>Helper::truncate_utf8_string($data['pl_content'],9,false),

			

		),

			array(

			'name'=>'评论时间',

			'type'=>'raw',

			'value'=>$data['pl_time'],

			

		),

		array(

			'class'=>'CButtonColumn',


		),

		

		

	),

));

 ?>

报错……Fatal error: Call to a member function getDbCriteria() on a non-object in D:\APMServ5.2.6\www\htdocs\yii\framework\web\CActiveDataProvider.php on line 173

什么原因呢?请大家帮忙解决下。

qiang帮忙解决下啊。

看看 CActiveDataProvider的文档:cactiveDataProvider

你在混用 CActiveDataProvider 跟 CSqlDataProvider 文档

还有你的CGridView :

  'name'=&gt;'编号',   这个应该是你model模型的某个属性名字(一般就跟数据库对应表的列名一致的)  怎么可能是汉字呢 继续看文档 里面都有示例的 <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/laugh.gif' class='bbc_emoticon' alt=':lol:' />

还有一个问题就是操作项,里面的的修改,查看,删除是在哪里控制的呢?还有点删除,哪里传id值????


<?php

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

	 'dataProvider'=>$dataProvider,

	 'pager'=>array(              //通过pager设置样式   默认为CLinkPager

                    'prevPageLabel'=>'上一页',

                    'firstPageLabel'=>'首页',  //first,last 在默认样式中为{display:none}及不显示,通过样式{display:inline}即可

                    'nextPageLabel'=>'下一页',

                    'lastPageLabel'=>'末页',

                    'header'=>'',

                      ),

              'ajaxUpdate'=>false, 

	'columns'=>array(

	  array(             

             'selectableRows' => 2,

             'footer' => '<input type="checkbox" id="cbCheckAll" onclick="checkAll(this);"/><label for="cbCheckAll">全选</label>',

             'class' => 'CCheckBoxColumn',

             'headerHtmlOptions' => array('width'=>'50px'),

             'checkBoxHtmlOptions' => array('name' => 'selectdel[]')          

     ),

       array(

			'name'=>'pl_id',

			'type'=>'raw',

			'value'=>$data['pl_id'],

		),

	array(

			'name'=>'news_title',

			'type'=>'raw',

			'value'=>$data['news_title'],

			

		),

		array(

			'name'=>'username',

			'type'=>'raw',

			'value'=>$data['username'],

			

		),

		array(

			'name'=>'pl_content',

			'type'=>'raw',

			'value'=>$data['pl_content'],

			

		),

			array(

			'name'=>'pl_time',

			'type'=>'raw',

			'value'=>$data['pl_time'],

			

		),

		array(

			'class'=>'CButtonColumn',


		),

		

		

	),

));

 ?>



还有一个问题就是操作项,里面的的修改,查看,删除是在哪里控制的呢?还有点删除,哪里传id值????

‘class’=>‘CButtonColumn’,修改,查看,删除

杳看这处档

http://www.yiiframework.com/wiki/106/using-cbuttoncolumn-to-customize-buttons-in-cgridview

这个你或许能用上


		array(

			'class'=>'CButtonColumn',

  			'template'=>'{delete}{down}',

			    'buttons'=>array

			    (

			        'delete' => array

			        (

			            'label'=>'Send an e-mail to this user',

			//            'imageUrl'=>Yii::app()->request->baseUrl.'/images/email.png',

			            'url'=>'Yii::app()->createUrl("Purchorders/DeleteOrder", array("id"=>$data["itemcode"],"rd"=>$row*mt_rand()))',

			        ),

        'down' => array

        (

            'label'=>'[-]',

         //   'url'=>'Yii::app()->createUrl("Purchorders/DeleteOrder", array("id"=>$row*mt_rand()))',

         //   'visible'=>'$row > 2',

	    'click'=>'function(event){


		    calc_onclick( $(this).parent().parent().children(":first").text()); 

		    return false;

 

			}',

        ),

				

			

			    ),


			

		    ),

		  array(

                    'type'=>'raw',

                    'value'=>'CHtml::ajaxLink("Update",

                              Yii::app()->createUrl("/Purchorders/DeleteOrder",array("id"=>$data["itemcode"])), 

                              array(

                                "type" => "POST",

                                "update"=>"#data",

                                "data" => array("eventid" =>"'.$row.$data->itemcode.'")

                              ),

                              array( //htmlOptions

                                "id" =>"update$row",

                              )

                            )',

		    )		

	),