我正在尝试使用CGridView自定义查询,并尝试构建一个非常简单的没有排序和东西。
我的视图包含简单的CGridView
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$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,
),
));
我没有keyField,因此我将其设置为 false 。此外,我尝试使用var_dump打印数据,数据存在于变量中,但我仍然得到这个未定义的偏移量错误。
答案 0 :(得分: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)
),
)
答案 1 :(得分:0)
您必须提供除keyfield
以外的false
,更改查询表的主键字段主键