V2.0 - 批量操作/批量勾选
yoyocmf 2020-08-22 01:00:50

一、批量操作

 

1、view视图页面,加id,加checkbox

PHP Code复制内容到剪贴板
  1. <?= \yii\grid\GridView::widget([  
  2.     'dataProvider' => $dataProvider,  
  3.     'options' => ['id' => 'orgGridView'],  
  4.     'columns' => [  
  5.         [  
  6.             'class' => 'yii\grid\CheckboxColumn',  
  7.             'name' => 'id',  
  8.         ],  
  9.         ...  
  10. ]);  
  11. ?>  

 

2、加按钮,和JS事件

PHP Code复制内容到剪贴板
  1. <?= Html::button('通知年检', ['class' => 'btn btn-danger ml-20 noticeAll']) ?>  

 

3、JS:

PHP Code复制内容到剪贴板
  1. <?php $this->beginBlock('js') ?>    
  2. <script>  
  3.     $(".noticeAll").on("click"function () {  
  4.         var keys = $("#orgGridView").yiiGridView("getSelectedRows");  
  5.         if (!keys.length) {  
  6.             layer.msg("请先勾选需通知的社会组织");  
  7.             return false;  
  8.         }  
  9.         layer.confirm('是否确定发送短信通知?', {  
  10.             title:'询问',  
  11.             icon:3,  
  12.             btn: ['确定''再想想'//可以无限个按钮  
  13.         }, function(index, layero){  
  14.             //按钮【确定】的回调  
  15.             $.modal.loading();  
  16.             $.post("<?=Url::to(['send-msg-to-org'])?>", {"ids": keys},  
  17.                 function (res) {  
  18.                     $.modal.unloading();  
  19.   
  20.                     if (res.code != undefined && res.code != '200' && res.code != '201') {  
  21.                         layer.open({  
  22.                             title: '错误'  
  23.                             ,icon:"2"  
  24.                             ,content: res.message || '操作失败'  
  25.                         });  
  26.                         return;  
  27.                     }  
  28.   
  29.                     layer.msg(res.message, {  
  30.                         time: 1000 //1秒后刷新  
  31.                     }, function(){  
  32.                         document.location.reload();  
  33.                     });  
  34.   
  35.                 }, "json");  
  36.   
  37.         }, function(index){  
  38.             //按钮【再想想】的回调  
  39.   
  40.         });  
  41.   
  42.     });  
  43. </script>  
  44. <?php $this->endBlock() ?>    

 

二、批量删除

 

视图文件,ID是主键,且是唯一值

XML/HTML Code复制内容到剪贴板
  1. <?= Html::button('批量删除', ['class' => 'btn btn-danger ml-20 deleteAll']) ?>  

 

PHP Code复制内容到剪贴板
  1. <?= GridView::widget([  
  2.     'dataProvider' => $dataProvider,  
  3.     'filterModel' => $searchModel,  
  4.     'options' => [  
  5.         'id' => 'timuGridView'  
  6.     ],  //'class' => 'table table-bordered table-hover table-responsive',  
  7.     'columns' => [  
  8.         [  
  9.             'class' => 'yii\grid\CheckboxColumn',  
  10.             'name' => 'id',  
  11.         ],  
  12.         'id',  
  13.         //...,  
  14.     ],  
  15. ]); ?>  

 

XML/HTML Code复制内容到剪贴板
  1. <?php $this->beginBlock('js') ?>  
  2. <script>  
  3.     $(".deleteAll").on("click", function () {  
  4.         // console.log('按钮点击事件')  
  5.         var keys = $("#timuGridView").yiiGridView("getSelectedRows");  
  6.         if (!keys.length) {  
  7.             layer.msg("请先勾选需删除的题目");  
  8.             return false;  
  9.         }  
  10.         layer.confirm('是否确定全部删除?', {  
  11.             title:'询问',  
  12.             icon:3,  
  13.             btn: ['确定', '再想想'] //可以无限个按钮  
  14.         }, function(index, layero){  
  15.             //按钮【确定】的回调  
  16.             $.modal.loading();  
  17.             $.post("<?=\yii\helpers\Url::to(['delete-select'])?>", {"id": keys},  
  18.                 function (ret) {  
  19.                     $.modal.unloading();  
  20.                     if (ret.code == '200' || ret.code == '201') {  
  21.                         layer.open({  
  22.                             icon: 1,  
  23.                             title: '成功',  
  24.                             content: ret.message,  
  25.                             // btn: ['登录', '我知道了'],  
  26.                             yes:function(index){                        //另一个应该是no:function  
  27.                                 document.location.reload();  
  28.                             }  
  29.                         });  
  30.                     }else{  
  31.                         layer.open({  
  32.                             title: '错误'  
  33.                             , icon: "2"  
  34.                             , content: ret.message || '操作失败'  
  35.                         });  
  36.                     }  
  37.                 }, "json");  
  38.   
  39.         }, function(index){  
  40.             //按钮【再想想】的回调  
  41.   
  42.         });  
  43.   
  44.     });  
  45. </script>  
  46. <?php $this->endBlock() ?>  

 

控制器添加(Delect action被按钮组的delete占用,所以这里更名为DeleteBatch):

PHP Code复制内容到剪贴板
  1. public function actions()  
  2. {  
  3.     return [  
  4.         // 删除指定ID  
  5.         'delete-select' => [  
  6.             'class' => 'backend\\actions\\DeleteBatch',  
  7.             'attribute' => 'id',                    // 根据什么字段属性删除  
  8.             'entity' => Timu::class // 这里注意是模型的classname  
  9.         ],  
  10.     ];  
  11. }  

 

更多用法参照:批量删除

 

 

本文来自于:http://www.yoyo88.cn/note/yoyocmf/539.html

Powered by yoyo苏ICP备15045725号