2018-11-22 20:50:24 1393次浏览 2条回答 0 悬赏 100 金钱

PHP代码如下:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        [
            'class' => 'yii\grid\CheckboxColumn',
        ],
        'id',
        'title',
        ……
    ],
]); ?>

JS代码如下:

$("#button").on("click", function(){
    var keys = $('#grid').yiiGridView('getSelectedRows');
    if(keys.lenth > 0){
        $.post('article/delete.php', {id:keys}, function(data, textStatus){
            alert('成功');
            
            // 清空已选择
            
        });
    }
});

问题:如何用yii.gridView.js提供的方法清空已选择的选项??

补充于 2018-11-23 08:50

或者用什么方法实现表单提交,但操作不止删除,还有更改状态等其它操作

最佳答案

  • 阿江 发布于 2018-11-23 09:47 举报
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'options'=>['id'=>'grid','class'=>'grid-view'],//给表单加个id,要在jQquery中使用
            'layout' => '{items}<div class="clear-fix"><a id="setgood" href="javascript:void(0)" class="btn btn-primary">设置精华</a>&nbsp;&nbsp;&nbsp;&nbsp;<a id="setnotgood" href="javascript:void(0)" class="btn btn-warning">取消精华</a></div>'{summary}{pager}{errors}<input "id"="setflagurl" name="setflagurl" type="hidden" value="'.Url::to(['setflags']).'" ></div>',//在模板中添加要操作的按钮和要提交的网址
            'columns' => [
                ['class'=>'yii\grid\CheckboxColumn'],
    
    <?php
    $js=<<<JS
          function setflag(value,option){
    	    var url=$('input[name=setflagurl]').val();
    	    //获取选择的记录项
                var ids = $('#grid').yiiGridView('getSelectedRows');
    	    //要传csrf,否则无法通过验证
                var csrf=$('input[name=_csrf]').val();        
    	    //使用ajax的post提交,在控制器中添加action执行相应的操作即可
                 $.ajax({
                    type:'POST',
                    url:url,
                    data:{
                        ids:ids,
                        option:option,
                        value:value,
                        _csrf:csrf
                    },
                    dataType:'json',
                    success:function(msg){
    		    //ajax返回信息的处理,如果有错误则报错
                        if(msg.error){
                            alert(msg.error);
                        }else{
    			//成功则重载当前页面
                            location.reload(true);
                        }
                    },
                    error:function(XMLHttpRequest,textStatus,errorThrown){
                        // alert(XMLHttpRequest.status);
                    }
                });  
            }
    	//执行点击操作
       $("#setgood").click(function(e){
               setflag(1,'is_good');
        }); 
         $("#setnotgood").click(function(e){
               setflag(2,'is_good');
        }); 
    JS;
    $this->registerJs($js);
    ?>
    
    1 条回复
    回复于 2018-12-04 11:25 回复

    我用了pjax,直接局部刷新了

您需要登录后才可以回答。登录 | 立即注册
墨轩娣
副董事长

墨轩娣 无锡

注册时间:2015-03-25
最后登录:19小时前
在线时长:241小时5分
  • 粉丝38
  • 金钱43040
  • 威望150
  • 积分46950

热门问题