我是Yii的新手,我很難搞清楚這一點。我想根據用戶選擇的選項在頁面上顯示多個CGridView,每個gridview只顯示該選項的記錄。在這種情況下,這些選項是作業狀態,如打開,關閉,進行中等。動態創建顯示不同數據的CGridViews
我有一些代碼工作,通過循環顯示多個網格視圖,但我不知道如何篩選它們:
$test = array(1,2,3,4,5);
foreach ($test as $value) {
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'job-grid',
'dataProvider'=>$model->search(),
'columns'=>array(
'ID',
'CustomerCompany',
'FirstName',
'LastName',
/* etc */
),
));
}
有關如何從數組中的值過濾每個gridview的任何想法?
謝謝!
UPDATE
好吧,我想通了如何做什麼,我試圖做。我處理它在這樣的控制器:
public function actionBoard()
{
$models = array();
$statuses = JobStatus::model()->findAll();
foreach ($statuses as $status)
{
$model=new Job('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['Job']))
$model->attributes=$_GET['Job'];
$model->Status = $status->ID;
$models[$status->Status] = $model;
}
$this->render('board',array('models'=>$models));
}
所以我覺得所有的狀態,然後使用ID字段做搜索,結果放在一個數組,然後將它傳遞給視圖。餘處理像這樣在視圖中:
foreach ($models as $status)
{
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'job-grid',
'dataProvider'=>$status->search(),
'columns'=>array(
'ID',
'CustomerCompany',
'FirstName',
'LastName',
'Phone1',
'Phone2',
/* etc */
),
));
基本上,創建「狀態」的陣列中的每個「狀態」一個gridview。似乎工作,只花了一些時間來考慮它的MVC條款,而不是我習慣的舊的ASP.NET數據綁定方法。
我認爲你只需要一個CGridViews,當你選擇選項時,你可以通過ajax更新表... – 2013-03-19 17:35:45