2015-06-25 40 views
0

我想用自定义查询使用CGridView,并试图构建一个非常简单,没有排序和东西。Yii框架未定义的偏移量:0

我的视图包含简单CGridView

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider, 
)); 

而且我的控制器传递$数据提供程序的视图

$count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM (' . $query . ') as count')->queryScalar(); 
$dataProvider=new CSqlDataProvider($query, array(
     'keyField' => false, 
     'totalItemCount'=>$count, 
     'pagination'=>array(
     'pageSize'=>10, 
     ), 
)); 

我没有一个关键字段,因此我已经将它设置为。此外,我尝试使用var_dump打印数据,数据存在于变量中,但仍然得到这个未定义的偏移错误。

+0

什么是您的$查询值? – Bfcm

+0

这是一个查询,它运行良好,$ dataprovider-> getData()给我结果 – mdanishs

回答

1

您需要设置映射进行排序。

/* 
Query results 
array(
    array(
     'id' => 1, 
     'username' => 'username', 
     'email' => 'email' 
    ), 
    ... 
) 
*/ 

return new CSqlDataProvider($query, array( 
    'keyField' => 'id', //required, any field from query results 
    'totalItemCount'=> $count, 
    'pagination' => array(
     'pageSize' => 10 
    ), 
    'sort' => array(
     'defaultOrder' => array(
      'username' => CSort::SORT_DESC,    
     ), 
     'attributes' => array(
      'username', 
      'email',    
     ), 
    ), 
)); 
//grid.columns 
array(
    array(
     'name' => 'id' //WO sort 
    ), 
    array(
     'name' => 'username', //with sort (isset in dp.sort.attributes)  
    ),  
) 
+0

如果我没有关键字段,该怎么办? – mdanishs

+0

''keyField'=>'id',//必填,查询结果中的任何字段 – cetver

+0

将keyField设置为任何列的作品,但分页不起作用,我也必须提供排序数组? – mdanishs

0

你必须提供比其他falsekeyfield,更改关键字段查询表的主键

+0

如果我没有关键字段,该怎么办? – mdanishs