2015-07-02 63 views
0

我在我的視圖中有一個表單,它從下拉列表中選擇列。 SqlDataProvider用於從生成的查詢中獲取數據我一直在嘗試將CGridView與SQLDataProvider結合使用,它的工作方式有點不錯,但仍然存在一些分頁問題。我沒有任何keyField,所以我給它我的第一列,沒有keyField它不起作用。CGridView分頁不起作用。 Yii

這裏是我的行動:

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)); 
    } 
} 

這裏的小部件代碼視圖,根據我看過,分頁應該自動工作,是不是因爲我用的是自定義查詢,而不是Yii的模型?

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

它首次顯示數據,但下一個按鈕不起作用。

回答

0

'keyField'=> $ firstColumn

什麼是$ firstColumn值。

Keyfield必須是CSqlDataProvider的數組退役索引