紧急求救CArrayDataProvider gridview及chtml问题


	$rawData=Yii::app()->db->createCommand('SELECT * FROM Purchorderdetails')->queryAll();

		$dataProvider=new CArrayDataProvider($rawData, array(

		    'id'=>'user',

		    'sort'=>array(

		        'attributes'=>array(

		             'itemcode', 'itemdescription', 'quantityord','unitprice',

		        ),

		    ),

		    'pagination'=>array(

		        'pageSize'=>10,

		    ),

		));


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

	'id'=>'purchorderdetails-grid',

	'dataProvider'=>$dataProvider,

	'emptyText'=>Yii::app()->params['emptyText_nodata'],

	'filter'=>$models,

	'columns'=>array(


		array( 'name'=>'itemcode',

		'type'=>'raw',

		'value'=>'CHtml::textField("itemcode",$data->itemcode)',

		),	

		'quantityord',

		'itemdescription',

		'unitprice',


	),

	

	

)); 

主要问题出现在’value’=>‘CHtml::textField(“itemcode”,$data->itemcode)’,为什么表单里没有值,是空的,我那里写错了。

同样的问题要是用$dataProvider=new CActiveDataProvider(‘Purchorderdetails’);生成$DataProvider,那么程序没有问题。

关键是使用CArrayDataProvider这个转换这后就有问题了。如果这样写’value’=>$data->itemcode,程序能正常显示,但是我想在这里用表单,要如何写呢?

我再说一下问题:

就是我使用new CArrayDataProvider生成$DataProvider后在gridview中使用表单输入不显示默认值,不使用表单显示值时格式这样’value’=>$data->itemcode,用"或’括上不行

你现在用的是 原生sql查询的 那么返回的数据就不是AR的实例了 此时$data 代表sql语句查询的结果集的一行记录

需要使用关联数组的方式访问: $data[‘itemcode’]

不知道上面的解决没啊?我现在也出现这样的情况?但是报错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


控制器;$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

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

第二楼答案是正确的