1

ここでは、条件を指定して選択した行を渡すために CActiveDataProvider を使用しています。ビューでは、CGridView に列を正常に表示していますが、同時に、列の検索を提供する必要があります。検索を提供できません。 . これが私のサンプルコードです

コントローラーコード

public function actionShow($id) 
{
    $model=new StudentResult('search');

    $model->unsetAttributes();  // clear any default values
    if(isset($_GET['StudentResult']))
        $model->attributes=$_GET['StudentResult'];

    $dataProvider=new CActiveDataProvider('StudentResult', array(
        'criteria'=>array(
            'condition'=>"profileId=$id",
            ),
        'pagination'=>array(
            'pageSize'=>20,
        ),
    ));

    $this->render('show',array(
        'model'=>$model,
        'dataProvider' => $dataProvider,
    ));

}

コードを見る

<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
'model'=>$model,
 )); ?>
 </div><!-- search-form -->

<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'student-result-grid',
'dataProvider'=>$dataProvider,
'filter'=>$model,
'columns'=>array(
    'id',
    'moduleCode',
    'moduleTitle',
    'moduleCredits',
    'grade',
    'creditsObtain',
    'semester',
    /*
    'points',
    'profileId',

    'createdOn',
    'lastModifiedOn',
    'lastModifiedBy',
    */
    array(
        'class'=>'CButtonColumn',
    ),
),
)); ?>

ビューでは、「dataProvider」=> $dataProvider を指定してデータを表示しているので、値は正しく表示されますが、「dataProvider」=> $model->search(); を指定すると検索が機能しません。全体の値が表示され、検索が機能しています

4

1 に答える 1

1

ここで、選択した行を目的のアクションに渡すことができます。

   <?php $this->widget('zii.widgets.grid.CGridView', array('id' =>'list-grid',
        'dataProvider'=>$dataProvider->search(),
        'filter' =>$dataProvider, 
        'columns'=>array(
        'id',
        'moduleCode',
        'moduleTitle',
        'moduleCredits',
        'grade',
        'creditsObtain',
        'semester',
         'action'=>array(
            'class'=>'CButtonColumn',
            'header' => 'Edit',
            'template' => '{Edit}',
            'buttons' => array(
                'Edit' =>array(
                'label' => 'Edit',
            'imageUrl'=>Yii::app()>request>baseUrl.'path/to/your/image',// you can use other options
                 'url' => 'Yii::app()->createUrl("/controller/action/id/".someencryption-to-hide-id($data->id))',),             
'visible' => TRUE,      ),
           ),
        ), )); ?>

コントローラのアクションは次のようになります。

public function actionYourAction() {
        $dataProvider = new ModelName('search');
        $dataProvider -> unsetAttributes();
        // clear any default values
        if (isset($_GET['ModelName'])) {
            $dataProvider -> attributes = $_GET['ModelName'];
        }
        $this -> render('viewPage', array('dataProvider' => $dataProvider, ));

    }

モデル基準は次のようになります。

 public function search()
    {
        $criteria -> compare('id', $this -> id);
        ...
        return new CActiveDataProvider($this, array('criteria' => $criteria, ));
    }

私はあなたを正しくしているのか教えてください。

于 2013-02-19T07:32:19.337 に答える