本文实例讲述了Yii把CGridView文本框换成下拉框的方法。分享给大家供大家参考。具体实现方法如下:

使用yii的朋友都知道Yii中的CGridView默认显示提文本框了,那么我们要怎么把它转换成下拉框呢?本文就此分析一下解决方法。

默认情况下CGridView会生成一个文本框,但是这并不友好,用户往往希望知道有什么可选的,特别是数据库里存的是数字id的时候,我们希望将数字转换为可读的文本,这时候只需要修改一下表头的"filter"属性就行了,比如:
复制代码 代码如下:<?php
$this->widget("zii.widgets.grid.CGridView", array(
    "id"=>"business-grid",
    "dataProvider"=>$dataProvider,
    "filter"=> Business::model(),
    "columns"=>array(
        "business_id",
        "name",
        "package_id"=> array(
            "name" => "package_id",
            "value" => "$data->package->package_title",
            "filter"=> CHtml::listData(Packages::model()->findAll(array("order"=>"package_title")), "package_id", "package_title")
        ),
        "user_id"=>array(
            "name" => "user_id",
            "value" => "$data->user->name",
            "filter"=> CHtml::listData(Users::model()->findAll(array("order"=>"firstname")), "id", "name")
        ),
        "categories" => array(
            "name" => "categories",
            "value" => "$data->returnAllCategories(", ",false);",
            "filter"=> CHtml::listData(Categories::model()->findAll(array("order"=>"category")), "cat_id", "category")
        ),
        "keywords" => array(
            "header" => "Keywords",
            "value" => "$data->returnAllKeywords(", ",false);",
        ),
        "links"=>array(
            "header"=>"Manage",
            "type"=>"raw",
            "value"=>"CHtml::link(CHtml::image(Yii::app()->request->baseUrl."/images/admin/approve.png","Approve"), array("approve","id"=>$data->business_id,"item"=>"business"),array("class"=>"approve-link","title"=>"Approve Business"))." ".
       CHtml::link(CHtml::image(Yii::app()->request->baseUrl."/images/admin/reject.png","Reject"), array("reject","id"=>$data->business_id,"item"=>"business"),array("class"=>"reject-link","title"=>"Reject Business"))",
        ),
    ),
));

生成type下拉框可以这么写:
复制代码 代码如下:"type"=>array(
    "name" => "type",
    "filter"=>$model->getTypeOptions(),
),

"type"=>array(
    "name" => "type",
    "filter"=>$model->getTypeOptions(),
),

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。