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 回答