2011-04-26 59 views
2

我在mysql中有一張表,我想用CGridView小部件顯示。這裏是我的代碼至今:將活動記錄數據插入Yii的CGRidView小部件

(剪斷當然)我的控制器文件:

public function actionIndex() 
{ 
    //call the AR table model 
    $model = new ViewResults(); 
    //This generates a simple "SELECT * FROM table statment". 
    $list = $model->findAll(); 
    $this->render('index', array('list'=>$list)); 
} 

我查看文件看起來像(剪斷):

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

,我發現了以下錯誤:

對第105行的C:\ xampp \ framework \ zii \ widgets \ CBaseListView.php中的非對象調用成員函數getData()

以下是CBaseListView.php文件的源代碼。

我敢肯定,我搞砸了列表對象的小部件。在我將它傳遞給小部件之前,我有什麼需要做的事情來$list

回答

2

您可以使用CActiveDataProvider Yii的類。 類似這樣的:

$dataProvider = new CActiveDataProvider('model', array(
    'criteria'=>array(
    'order'=>'column1', 
), 
)); 

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'my-grid', 
    'dataProvider'=>$dataProvider, 
    'columns'=>array(
    'column1', 
    'column2', 
    'column3', 
    array(
     'class'=>'CButtonColumn', 
    ), 
), 
)); 

其中模型是您的模型和列的列。

+0

新的CActiveDataProvider調用是否在視圖中使用小部件? – 2011-04-26 20:08:22

+0

回答我自己的意見:不。您在控制器中調用數據提供者並將該變量傳遞給視圖。這工作。謝謝你,先生。 – 2011-04-26 20:14:26

+0

這是完全錯誤的。你不需要使用CActiveDataProvider – 2011-04-27 17:28:27

3

findAll()返回一個數組,而CActiveDataProvider返回一個dataProvider。

如果你想使用查找所有,所有你需要做的就是轉換爲使用CArrayDataProvider

例如數組:

<? 
php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>new CArrayDataProvider($list, array()), 
)); 
?> 
0

使用CArrayDataProvider也是一個選項。但是來自CActiveDataProvider的排序很容易完成。

+0

我想刪除這個答案,並將其作爲評論寫在您的原始下。 – 2011-04-27 19:35:05