在CGridView里,有时候需要用到复杂的查询时,可用 CSqlDataProvider替换CActiveDataProvider,

CSqlDataProvider 可用复杂的查询语句,例子如下:

1.在控制器中:

    public function actionIndex()
{
$count = Yii::app()->db->createCommand('SELECT COUNT(*) FROM app_item')->queryScalar();
$sql = 'SELECT * FROM app_item';
$dataProvider = new CSqlDataProvider($sql, array(
'totalItemCount' => $count,//数量
'sort' => array(
'attributes' => array(
'name'=>array('label'=>'名称'),
'type'=>array('label'=>'类型'),
'data'=>array('label'=>'数据')
)
),
'keyField'=>'name',//Yii 默认的主键是 id,而我的数据库默认的是 name,所以这里设定 name
'pagination' => array(
'pageSize' => 10
),
));
$this->render('index',array('dataProvider'=>$dataProvider));
} //自定义函数,用于 type字段的解释
public function get_type($data,$row){
$type = $data["type"];
if( $type == 1 ) {
echo '权限';
}elseif( $type == 2 ) {
echo '角色';
}elseif( $type == 0 ) {
echo '任务';
}
}

2.在视图中

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'app-item-grid',
'dataProvider'=>$dataProvider,
'columns'=>array(
array(
'id'=>'CheckBox',//输出复选框
'class'=>'CCheckBoxColumn',
'selectableRows' => '50',
),
'name',//保持原样
array(
'name'=>'type',
'type'=>'raw',
'value'=>array($this,'get_type'), //get_type 是自定义的函数
'htmlOptions'=>array('width'=>"100px"), //设置样式
),
array(
'header'=>'附加字段',
'value'=>'substr($data["name"],0,3)',//如果是 CActiveDataProvider 时用对象方式 $data->name
),
),
))

3.结果如下

最新文章

  1. Sql Server 2012新特性 Online添加非空栏位.
  2. espcms列表页ajax获取内容 - 并初始化swiper
  3. 对C++对象实例化的测试
  4. Uva 11542 乘积是平方数
  5. HDU 5651 xiaoxin juju needs help 水题一发
  6. C#功能扩张方式
  7. C语言学习笔记--字符串函数
  8. COJ 0580 4021征兵方案
  9. WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]
  10. rpm打包工具---FPM
  11. keystonejs开发中解决bug--版本要对应
  12. AlexNet实践
  13. SpringBoot与SpringCloud学习指南
  14. TabLayout基本属性全解
  15. poj1703(种类并查集)
  16. Chrome Input框老是有输入记录的终极解决方案
  17. 【10】JMicro微服务-API网关
  18. Maven 映像
  19. Mysql 查询是否锁表
  20. mysql 基本的操作数据库命令

热门文章

  1. 详细记录登录过程的用户、IP地址、shell命令以及详细操作时间
  2. 9.16考试 第一题 X国的军队题解
  3. 对于springboot的几种注入方法的个人看法
  4. Java编程思想:NIO知识点
  5. opatch卸载weblogic12.1.3.0补丁
  6. Jenkins+Sonar搭建持续集成和代码质量检查环境
  7. 入职两个月,WPF开发感想
  8. 小白之入口即化——十分钟看懂while循环,字符串格式化,运算符
  9. Excel催化剂开源第46波-按行列排列多个图形技术要点
  10. 个人永久性免费-Excel催化剂功能第64波-多级数据如省市区联动输入,自由配置永不失效