Yii CGridView CButtonColumn, ajax 自定义按钮之三
2014-06-27 10:24
537 查看
http://www.yiiframework.com/wiki/410/create-custom-button-button-with-ajax-function-in-cgridview/ Introduction CButtonColumn in CGridView can be customised to include user built buttons. To learn a great deal about including custom buttons, read this excellent wiki. This tutorial will show how to call an action from one custom button using AJAX instead of regular GET calls. How to 1.Create a custom button in your grid. You can follow this tutorial for that. 2.In the ‘url’ parameter of your button, you call your controller action: 'url'=>'Yii::app()->controller->createUrl("myAction",array("id"=>$data->primaryKey))' •In the ‘click’ function of your button you add the following code: 'click'=>"function(){ $.fn.yiiGridView.update('my-grid', { //change my-grid to your grid's name type:'POST', url:$(this).attr('href'), success:function(data) { $.fn.yiiGridView.update('my-grid'); //change my-grid to your grid's name } }) return false; } ", This will call the controller function using AJAX instead of redirecting the user to the url using GET parameters. Example We will create a button that sends email to the user and then prints a success flash screen. In your controller: public function actionEmail($id) { $model = $this->loadModel($id); $email = $model->email; //this is the user email if (mail($email, 'My Subject', 'my message')) echo 'email sent to '.$email; // if AJAX request, we should not redirect the browser if(!isset($_GET['ajax'])) $this->redirect(Yii::app()->request->urlReferrer); } In your view file, in a CButtonColumn of the grid: array ( 'class'=>'CButtonColumn', 'template'=>'{email}{view}{update}{delete}', 'buttons'=>array ( 'email' => array ( 'label'=>'Send an e-mail to this user', 'imageUrl'=>Yii::app()->request->baseUrl.'/images/email.png', 'click'=>"function(){ $.fn.yiiGridView.update('user-grid', { type:'POST', url:$(this).attr('href'), success:function(data) { $('#AjFlash').html(data).fadeIn().animate({opacity: 1.0}, 3000).fadeOut('slow'); $.fn.yiiGridView.update('user-grid'); } }) return false; } ", 'url'=>'Yii::app()->controller->createUrl("email",array("id"=>$data->primaryKey))', ), ) In your view file you also need to include the div for the flash message: <div id='AjFlash' class="flash-success" style="display:none"></div>
相关文章推荐
- Yii CGridView CButtonColumn, ajax 自定义按钮之三
- Yii CGridView CButtonColumn, 自定义按钮之二
- Yii CGridView CButtonColumn, 自定义按钮之一
- 自定义 Yii CGridView Column 的显示
- 使用CButtonColumn自定义CGridiew里面的按钮
- yii CButtonColumn 按钮
- 使用CButtonColumn自定义CGridiew里面的按钮
- Yii 1.1: Using CButtonColumn to customize buttons in CGridView Follow @yiiframework
- 使用CButtonColumn自定义CGridiew里面的按钮
- Yii框架zii.widgets.grid自定义按钮,ajax触发事件并提示
- Yii中CGridView单元格组件delete之Ajax特性
- YII:CButtonColumn中button设定不能给image设置样式
- Yii框架zii.widgets.grid自定义按钮,ajax触发事件并提示
- 用ajax实现带标题,图片和自定义按钮的删除确认对话框
- Yii——CDetailView,CGridView等widget中,输出Model属性或自定义,type设置实例
- Yii:给CGridView的某列添加操作按钮
- yii2.0之GridView自定义按钮和链接用法
- Yii: 如何在CGridView通过Ajax方式刷新数据后执行JS脚本
- Yii-ajax载入的ajax按钮无效的解决方法。
- Yii:如何在CGridView列表控件使用了Ajax方式更新数据的情况下返回前一个页面