我的 View 中有一个表单,它从下拉列表中选择列。 SqlDataProvider用于从生成的Query中获取数据
我一直在尝试将 CGridView 与 SQLDataProvider 一起使用,它工作得有点好,但仍然存在一些分页问题。我没有任何 keyField,所以我给它我的第一列,如果没有 keyField,它就不起作用。
这是我的行动:
public function actionIndex()
{
$tables = Yii::app()->db->schema->getTables();
if(isset($_POST['yt0'])){ //if from submitted
$query = $this->generateQuery();
$count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM ( ' . $query . ' ) as count')->queryScalar();
$dataProvider = new CSqlDataProvider($query, array(
'keyField' => $firstColumn,
'totalItemCount'=> $count,
'pagination'=> array(
'pageSize'=>20,
),
));
$columns = $this->getColumnNamesWithoutTable();
$this->render('index',
array( 'tables' => $tables,
'query' => $query,
'dataProvider' => $dataProvider,
'columns' => $columns
)
);
}else{
$this->render('index', array('tables' => $tables));
}
}
这是 View 中的小部件代码,根据我所读到的内容,分页应该自动工作,是因为我使用的是自定义查询而不是 Yii Models 吗?
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'enablePagination'=> true,
));
第一次显示数据,但下一步按钮不起作用。
最佳答案
我刚刚在 sqldataprovider 中添加了totalitemcount,它对我有用,如果有人仍然想知道,
$dataProvider=new CSqlDataProvider($sql, array(
'pagination'=>array(
'pageSize'=>10,
),
'totalItemCount'=>'100000'
));
关于php - CGridView 分页不起作用。伊伊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31175830/