本文实例讲述了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程序设计有所帮助。