0

我尝试以下查询,它产生一个数组,

$user = Yii::app()->reg->createCommand()
->select('studentID')
->from('Students')
->queryAll();

但是,当我尝试在 CGridview 中获取查询的值时,我得到了错误,

Property "CDbCommand.0" is not defined.

这是gridview的代码,

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid',
'dataProvider'=> new CSqlDataProvider($user),
));
4

5 回答 5

1

已编辑:在您的 $model 中定义数据:

public function newsearch(){
$query = "Your Query";
$count=Yii::app()->db->createCommand($query)->queryScalar();
$dataProvider = new CSqlDataProvider($query, array(
         'totalItemCount'=>$count));
}

在您的控制器操作中:

$model = new model or assigned model;
 //Your Logic //
$this->render('viewname',array('model'=>$model));

并在您的视图文件中调用此函数:

'dataProvider'=> $model->newsearch(),

请记住,您的 dataprovider 属性仅取决于您的查询。使用别名并在 gridview 列中调用。

于 2013-03-18T08:59:39.613 回答
0

看一下CSqlDataProviderconstructor,第一个参数应该是一个包含 SQL 查询的字符串,或者 a CdbCommand,但 $user 是一个array

你应该试试 :

$command = Yii::app()->reg->createCommand()
  ->select('studentID')
  ->from('Students');

和 :

'dataProvider'=> new CSqlDataProvider($command)

PS:你试过用CActiveDataProvider吗?

于 2013-03-18T07:52:27.080 回答
0

这是代码,

<?php 
$query = "SELECT student_name FROM  smartrea_srkreg.Students";
$count=Yii::app()->reg->createCommand($query)->queryAll();
$dataProvider = new CSqlDataProvider($query, array(
'totalItemCount'=>$count,
'pagination'=>array(
'pageSize'=>30,
 ),
));
var_dump($dataProvider);
?>

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid',
'dataProvider'=> $dataProvider, 
)); ?>
于 2013-03-20T03:36:04.367 回答
0

这是控制器的内容。将此数据提供者传递给模板

$dataProvider = new CActiveDataProvider('Students',
             array(
            'criteria'=>array(                        
            'select'=>'t.studentID'
        )));

在模板文件中粘贴以下代码:

$this->widget('zii.widgets.grid.CGridView', array(
   'id'=>'subject-grid',
   'dataProvider'=>$model,
   'columns'=>array(
       'studetID',
        array(
           'class'=>'CButtonColumn',
        ),
   ),
));

愿这对你有帮助:)

于 2013-03-20T04:03:54.203 回答
-2

使用 'keyfield' 避免错误,未定义索引 'id' 和 keyfield = 所选列的名称

$dataProvider = new CSqlDataProvider($query, array(
'totalItemCount'=>(int) $count1,
'keyField' => 'studentID',
'pagination'=>array( 'pageSize'=>30, ),));
于 2013-03-22T02:53:53.640 回答