Yii框架zii.widgets.grid自定义按钮,ajax触发事件并提示
我们在用表格展示数据并管理的时候,可能会需要用到按钮来操作某一行数据,比如查看,修改,删除!
Yii内置了3种按钮:查看,修改和删除,你可以自定义样式、事件。详细配置见类参考:CButtonColumn.
如果需要自定义按钮绑定指定的事件该怎么办呢?
幸运的是Yii提供了自定义按钮的办法.看代码:
在视图文件里面:
- $this->widget('zii.widgets.grid.CGridView', array(
- 'id'=>'xx-xx-grid',
- 'dataProvider'=>$model->search(),
- 'filter'=>$model,
- 'pager'=>array(
- 'class'=>'CLinkPager',
- 'nextPageLabel'=>'下一页',
- 'prevPageLabel'=>'上一页',
- 'header'=>'',
- ),
- 'summaryText'=>'<font color=#0066A4>显示{start}-{end}条.共{count}条记录,当前第{page}页</font>',
- 'columns'=>array(
- array(
- 'name'=>'id',
- 'htmlOptions'=>array('width'=>'25'),
- 'sortable'=>false,
- ),
- array(
- 'class'=>'CButtonColumn',
- 'template'=>'{view} {update}',
- 'viewButtonOptions'=>array('title'=>'查看'),
- 'updateButtonOptions'=>array('title'=>'修改'),
- ),
- array(
- 'class'=>'CButtonColumn',
- 'header'=>'首页展示',
- 'template'=>'{add} {del}',
- 'buttons'=>array(
- 'add' => array(
- 'label'=>'展示', // text label of the button
- 'url'=>'Yii::app()->controller->createUrl("focus/create",array("id"=>$data->primaryKey,"type"=>1))', // a PHP expression for generating the URL of the button
- 'imageUrl'=>'http://s.maylou.com/common/images/ysh.jpg', // image URL of the button. If not set or false, a text link is used
- 'options'=>array('style'=>'cursor:pointer;'), // HTML options for the button tag
- 'click'=>$click, // a JS function to be invoked when the button is clicked
- 'visible'=>'SiteRecommend::isItemInTypeAndId(1, $data->id)?false:true',
- ),
- 'del' => array(
- 'label'=>'取消展示', // text label of the button
- 'url'=>'Yii::app()->controller->createUrl("focus/delete",array("id"=>$data->primaryKey,"type"=>1))', // a PHP expression for generating the URL of the button
- 'imageUrl'=>'http://s.maylou.com/common/images/yzhu.jpg', // image URL of the button. If not set or false, a text link is used
- 'options'=>array('style'=>'cursor:pointer;'), // HTML options for the button tag
- 'click'=>$click, // a JS function to be invoked when the button is clicked
- 'visible'=>'SiteRecommend::isItemInTypeAndId(1, $data->id)?true:false',
- )
- ),
- ),
- ),
- ));
buttons选项提供了创建按钮的方法,上面创建了2个按钮:add和del,并注册到template里面。其中最主要的是click选项,决定了你的触发条件。这里用ajax触发。在上面的代码前面加上$click内容:
- $csrfTokenName = Yii::app()->request->csrfTokenName;
- $csrfToken = Yii::app()->request->csrfToken;
- $csrf = "\n\t\tdata:{ '$csrfTokenName':'$csrfToken' },";
- $Confirmation= "你确定要这么做?";
- $afterDelete = 'function(link,success,data){ if(success) alert(data); }';
- $click=<<<EOD
- function() {
- if(!confirm("$Confirmation")) return false;;
- var th=this;
- var afterDelete=$afterDelete;
- $.fn.yiiGridView.update('build-oneprice-grid', {
- type:'POST',
- url:$(this).attr('href'),$csrf
- success:function(data) {
- $.fn.yiiGridView.update('build-oneprice-grid');
- afterDelete(th,true,data);
- },
- error:function(XHR) {
- return afterDelete(th,false,XHR);
- }
- });
- return false;
- }
- EOD;
csrf不用管他,是安全验证,必须要有,否则会400报错.$click是js函数的字符窜,用了文档字符窜形式,注意结束的EOD前面必须没空格,也不能缩进。
这是Yii内置的yiiGridView Jquery插件,把请求提交到控制器的动作里面处理,然后返回结果并显示。最后还会更新一
Yii框架zii.widgets.grid自定义按钮,ajax触发事件并提示相关推荐
- Yii框架zii.widgets.grid自定义按钮
案例1: <?php $this->widget('zii.widgets.grid.CGridView', array('id'=>'xx-xx-grid','dataProvid ...
- Yii框架里用grid.CGridView调用pager扩展不显示最后一页按钮的解决
有如下一例,调用zii.widgets.grid.CGridView显示Blog信息,代码如下: 1 $this->widget('zii.widgets.grid.CGridView', 2 ...
- Yii:zii.widgets.CMenu使用方法
Yii:zii.widgets.CMenu使用方法 $this->widget('zii.widgets.CMenu',array( 'items'=>array( ...
- CDbCriteria CArrayDataProvider zii.widgets.grid (1)
商品汇总/在数据库新建表GoodsSummary实现view得稍作改变 /* public function actionGoodslist() { $connection=Yii::app()-& ...
- CDbCriteria CArrayDataProvider zii.widgets.grid (2)
//商品汇总 public function actionGoodslist() { set_time_limit(0); $criteria = new CD ...
- 【Android 插件化】Hook 插件化框架 ( Hook 实现思路 | Hook 按钮点击事件 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- iOS开发两个距离较近的按钮同时触发事件的解决方法
最繁琐的一种方法是(给按钮加判断): // Created by Mini on 16/3/11. // Copyright © 2016年 IZHUO.NET. All rights reserve ...
- 微信小程序 button按钮怎么触发事件? bindtap语法怎么使用?
在前端网页中我们需要触发一个事件如果按钮点击后调用函数,文本.图片.链接被点击后调用一个函数一个事件,我们都知道用click,可是微信小程序中的click是不存在的,他怎么才能和网页中一样的使用cli ...
- Grid表格的js触发事件
没怎么接触过Grid插件: 解决的问题是:点击Grid表行里的内容触发js方法弹出模态框,用以显示选中内容的详细信息. 思路:给准备要触发的列加上一个css属性,通过这个css属性来获取元素并触发js ...
最新文章
- Kail Linux渗透测试实训手册第3章信息收集
- 雾里散步——这次聊聊自已
- 前端之JavaScript:JS之DOM对象一
- CentOS开启samba服(附smb.conf手册)
- 设计算法统计二叉树(采用二叉链存储结构)中结点值为x的结点个数_20题,算法工程师能力评估测试来啦...
- 常用HDFS java API
- 微信公共账号学习笔记 _ 感想 爪机码字
- 在上传前探测磁盘是否挂载正常
- 关于es cpu安装黑苹果,并实现变频
- .net快速开发框架源码分享
- APP项目资源对接平台有那几家
- DDD 领域事件设计(基于Guava EventBus二次封装)
- Python Factory 工厂方法
- matlab 变限积分计算,Matlab变限积分计算【方法教程】
- 怎样关闭qq位置定位服务器,手机qq怎么关闭定位
- ServiceNow CSA管理员考试(ServiceNow Fundamentals (On Demand) Paris)
- 预测不了世界杯比分,就预测百威啤酒销量,送数据竞赛冠军笔记
- Shop项目后台--4.所有订单的订单详情/admin/order/list.jsp
- MacbookPro 2015 13-ich 成功更换硬盘的方案(intel 760p 1T)
- STM32CubeIDE开发(三十一), stm32人工智能开发应用实践(Cube.AI).篇一