如何在CGridview下拉列表中使用文本而不是值

时间:2013-09-12 05:35:54

标签: php gridview yii

我是Yii的新手。我有一个带搜索框的gridview。其中一个搜索框必须由下拉列表替换。根据下拉列表值,应替换gridview单元格中的值。

假设我使用(0-> No Activity, 1->Pending, 2->Approved, 3-> Rejected)。我需要在Gridview单元格和下拉列表中分别替换0表示No Activity,1表示待处理,2表示已批准,3表示已拒绝。

我应该在数组的值

中提及什么
array(
            'name' => 'Test',
            'value' =>                  
            'filter' => array('0' => 'No Activity', '1' => 'Pending','2' => 'Approved', '3' => 'Rejected',''=>'All'),                        
            'htmlOptions' => array('style' => 'width: 500px;'),
            ),

我正在使用PHP 5.2Yii version 1.13

我编辑了下面的代码,这对我来说很好用

EDIT :

function getTestType($test)
{
    $testTypesList = array('0'=> 'No Activity', '1'=>'Pending', '2'=>'Approved', '3'=> 'Rejected',''=>'All');
    if(is_null($test)){
        return 'All';
    }else{
        return $test=$testTypesList[$test];
    }

}

并在视野中

array(
            'name' => 'Test',
            'value' =>'getTestType($data->textfield)'                  
            'filter' => array('0' => 'No Activity', '1' => 'Pending','2' => 'Approved', '3' => 'Rejected',''=>'All'),                        
            'htmlOptions' => array('style' => 'width: 500px;'),
            ),

2 个答案:

答案 0 :(得分:0)

控制器:

 $arrayList = array(0-> No Activity, 1->Pending, 2->Approved, 3-> Rejected,''=>'All');

将此发送到查看文件:

$this->render('index',array(
        'model'=>$model,
        'arrayList'=>$arrayList, // Send array to view file
    ));

,并在查看文件中:

array(           
                'name'=>'Test',
                'value'=>function ($data, $row) use ($arrayList){ return $data->name_field? $arrayList[$data->name_field] : 'All' ; },
        ),

编辑:PHP 5.2

查看:

    array(
         'name'=>'Test',
         'header'=>'Test',
         'type'=>'raw',
         'value'=>'Test::getTestType($data->test)'
   ),

TEST模型:

public static $testTypesList = array('0'=> 'No Activity', '1'=>'Pending', '2'=>'Approved', '3'=> 'Rejected',''=>'All');
public function getTestType($test)
{
    if(is_null($test)){
        return 'All';
    }else{
        return self::$testTypesList[$test];
    }

}

答案 1 :(得分:0)

数组中的值字段是可见的,

Daniel Vaquero是如何确定要显示的内容的,但是您是否想要使用下拉列表或文本字段过滤此列,您应该像这样过滤

'filter' => CHtml::dropDownList( array( ... ))

希望这有帮助, 欢呼声