我们在用表格展示数据并管理的时候,可能会需要用到按钮来操作某一行数据,比如查看,修改,删除!

Yii内置了3种按钮:查看,修改和删除,你可以自定义样式、事件。详细配置见类参考:CButtonColumn.

如果需要自定义按钮绑定指定的事件该怎么办呢?

幸运的是Yii提供了自定义按钮的办法.看代码:

在视图文件里面:

Php代码  
  1. $this->widget('zii.widgets.grid.CGridView', array(
  2. 'id'=>'xx-xx-grid',
  3. 'dataProvider'=>$model->search(),
  4. 'filter'=>$model,
  5. 'pager'=>array(
  6. 'class'=>'CLinkPager',
  7. 'nextPageLabel'=>'下一页',
  8. 'prevPageLabel'=>'上一页',
  9. 'header'=>'',
  10. ),
  11. 'summaryText'=>'<font color=#0066A4>显示{start}-{end}条.共{count}条记录,当前第{page}页</font>',
  12. 'columns'=>array(
  13. array(
  14. 'name'=>'id',
  15. 'htmlOptions'=>array('width'=>'25'),
  16. 'sortable'=>false,
  17. ),
  18. array(
  19. 'class'=>'CButtonColumn',
  20. 'template'=>'{view} {update}',
  21. 'viewButtonOptions'=>array('title'=>'查看'),
  22. 'updateButtonOptions'=>array('title'=>'修改'),
  23. ),
  24. array(
  25. 'class'=>'CButtonColumn',
  26. 'header'=>'首页展示',
  27. 'template'=>'{add} {del}',
  28. 'buttons'=>array(
  29. 'add' => array(
  30. 'label'=>'展示',     // text label of the button
  31. 'url'=>'Yii::app()->controller->createUrl("focus/create",array("id"=>$data->primaryKey,"type"=>1))',       // a PHP expression for generating the URL of the button
  32. 'imageUrl'=>'http://s.maylou.com/common/images/ysh.jpg',  // image URL of the button. If not set or false, a text link is used
  33. 'options'=>array('style'=>'cursor:pointer;'), // HTML options for the button tag
  34. 'click'=>$click,     // a JS function to be invoked when the button is clicked
  35. 'visible'=>'SiteRecommend::isItemInTypeAndId(1, $data->id)?false:true',
  36. ),
  37. 'del' => array(
  38. 'label'=>'取消展示',     // text label of the button
  39. 'url'=>'Yii::app()->controller->createUrl("focus/delete",array("id"=>$data->primaryKey,"type"=>1))',       // a PHP expression for generating the URL of the button
  40. 'imageUrl'=>'http://s.maylou.com/common/images/yzhu.jpg',  // image URL of the button. If not set or false, a text link is used
  41. 'options'=>array('style'=>'cursor:pointer;'), // HTML options for the button tag
  42. 'click'=>$click,     // a JS function to be invoked when the button is clicked
  43. 'visible'=>'SiteRecommend::isItemInTypeAndId(1, $data->id)?true:false',
  44. )
  45. ),
  46. ),
  47. ),
  48. ));

buttons选项提供了创建按钮的方法,上面创建了2个按钮:add和del,并注册到template里面。其中最主要的是click选项,决定了你的触发条件。这里用ajax触发。在上面的代码前面加上$click内容:

Php代码  
  1. $csrfTokenName = Yii::app()->request->csrfTokenName;
  2. $csrfToken = Yii::app()->request->csrfToken;
  3. $csrf = "\n\t\tdata:{ '$csrfTokenName':'$csrfToken' },";
  4. $Confirmation= "你确定要这么做?";
  5. $afterDelete = 'function(link,success,data){ if(success) alert(data); }';
  6. $click=<<<EOD
  7. function() {
  8. if(!confirm("$Confirmation")) return false;;
  9. var th=this;
  10. var afterDelete=$afterDelete;
  11. $.fn.yiiGridView.update('build-oneprice-grid', {
  12. type:'POST',
  13. url:$(this).attr('href'),$csrf
  14. success:function(data) {
  15. $.fn.yiiGridView.update('build-oneprice-grid');
  16. afterDelete(th,true,data);
  17. },
  18. error:function(XHR) {
  19. return afterDelete(th,false,XHR);
  20. }
  21. });
  22. return false;
  23. }
  24. EOD;

csrf不用管他,是安全验证,必须要有,否则会400报错.$click是js函数的字符窜,用了文档字符窜形式,注意结束的EOD前面必须没空格,也不能缩进。

这是Yii内置的yiiGridView Jquery插件,把请求提交到控制器的动作里面处理,然后返回结果并显示。最后还会更新一

Yii框架zii.widgets.grid自定义按钮,ajax触发事件并提示相关推荐

  1. Yii框架zii.widgets.grid自定义按钮

    案例1: <?php $this->widget('zii.widgets.grid.CGridView', array('id'=>'xx-xx-grid','dataProvid ...

  2. Yii框架里用grid.CGridView调用pager扩展不显示最后一页按钮的解决

    有如下一例,调用zii.widgets.grid.CGridView显示Blog信息,代码如下: 1 $this->widget('zii.widgets.grid.CGridView', 2 ...

  3. Yii:zii.widgets.CMenu使用方法

    Yii:zii.widgets.CMenu使用方法 $this->widget('zii.widgets.CMenu',array(             'items'=>array( ...

  4. CDbCriteria CArrayDataProvider zii.widgets.grid (1)

    商品汇总/在数据库新建表GoodsSummary实现view得稍作改变 /*  public function actionGoodslist() { $connection=Yii::app()-& ...

  5. CDbCriteria CArrayDataProvider zii.widgets.grid (2)

    //商品汇总     public function actionGoodslist() {         set_time_limit(0);         $criteria = new CD ...

  6. 【Android 插件化】Hook 插件化框架 ( Hook 实现思路 | Hook 按钮点击事件 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  7. iOS开发两个距离较近的按钮同时触发事件的解决方法

    最繁琐的一种方法是(给按钮加判断): // Created by Mini on 16/3/11. // Copyright © 2016年 IZHUO.NET. All rights reserve ...

  8. 微信小程序 button按钮怎么触发事件? bindtap语法怎么使用?

    在前端网页中我们需要触发一个事件如果按钮点击后调用函数,文本.图片.链接被点击后调用一个函数一个事件,我们都知道用click,可是微信小程序中的click是不存在的,他怎么才能和网页中一样的使用cli ...

  9. Grid表格的js触发事件

    没怎么接触过Grid插件: 解决的问题是:点击Grid表行里的内容触发js方法弹出模态框,用以显示选中内容的详细信息. 思路:给准备要触发的列加上一个css属性,通过这个css属性来获取元素并触发js ...

最新文章

  1. Kail Linux渗透测试实训手册第3章信息收集
  2. 雾里散步——这次聊聊自已
  3. 前端之JavaScript:JS之DOM对象一
  4. CentOS开启samba服(附smb.conf手册)
  5. 设计算法统计二叉树(采用二叉链存储结构)中结点值为x的结点个数_20题,算法工程师能力评估测试来啦...
  6. 常用HDFS java API
  7. 微信公共账号学习笔记 _ 感想 爪机码字
  8. 在上传前探测磁盘是否挂载正常
  9. 关于es cpu安装黑苹果,并实现变频
  10. .net快速开发框架源码分享
  11. APP项目资源对接平台有那几家
  12. DDD 领域事件设计(基于Guava EventBus二次封装)
  13. Python Factory 工厂方法
  14. matlab 变限积分计算,Matlab变限积分计算【方法教程】
  15. 怎样关闭qq位置定位服务器,手机qq怎么关闭定位
  16. ServiceNow CSA管理员考试(ServiceNow Fundamentals (On Demand) Paris)
  17. 预测不了世界杯比分,就预测百威啤酒销量,送数据竞赛冠军笔记
  18. Shop项目后台--4.所有订单的订单详情/admin/order/list.jsp
  19. MacbookPro 2015 13-ich 成功更换硬盘的方案(intel 760p 1T)
  20. STM32CubeIDE开发(三十一), stm32人工智能开发应用实践(Cube.AI).篇一

热门文章

  1. FastDNS中修改IP地址
  2. 使用For循环写出99乘法表
  3. 洗牌、发牌算法 (打乱扑克牌顺序)
  4. Java中将对象转换成String的三种方法
  5. SoC设计与验证流程
  6. java多线程概念、实现、状态和生命周期、同步、通信
  7. 华硕电脑连接不上wifi_华硕电脑连不上无线网怎么办
  8. 第一章 python初窥 课后练习题
  9. 【雕爷学编程】Arduino动手做(57)---四档矩形波模块
  10. Win10电脑没有打开蓝牙的按钮怎么办?