skye 2011-05-27 17:21:46 13740次浏览 26条回复 3 0 0

1,CGridView中的columns添加

array(
    'selectableRows' => 2,
    'footer' => '<button type="button" onclick="GetCheckbox();" style="width:76px">批量删除</button>',
    'class' => 'CCheckBoxColumn',
    'headerHtmlOptions' => array('width'=>'33px'),
    'checkBoxHtmlOptions' => array('name' => 'selectdel[]'),
),

作用是添加多选框 2.js代码

<script type="text/javascript">
    /*<![CDATA[*/
    var GetCheckbox = function (){
        var data=new Array();
        $("input:checkbox[name='selectdel[]']").each(function (){
            if($(this).attr("checked")==true){
                data.push($(this).val());
            }
        });
        if(data.length > 0){
            $.post('<?php echo CHtml::normalizeUrl(array('/admin/words/delall/'));?>',{'selectdel[]':data}, function (data) {
                var ret = $.parseJSON(data);
                if (ret != null && ret.success != null && ret.success) {
                    $.fn.yiiGridView.update('yw1');
                }
            });
        }else{
            alert("请选择要删除的关键字!");
        }
    }
    /*]]>*/
</script>

3.Action

public function actionDelall()
{
    if (Yii::app()->request->isPostRequest)
    {
        $criteria= new CDbCriteria;
        $criteria->addInCondition('id', $_POST['selectdel']);
        Words::model()->deleteAll($criteria);//Words换成你的模型
        
        if(isset(Yii::app()->request->isAjaxRequest)) {
            echo CJSON::encode(array('success' => true));
        } else
            $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('index'));
    }
    else
        throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}

图片 [attach]183[/attach]

  • 回复于 2011-08-26 17:23 举报

    在我所见的Yii blog中还没有js代码,那么这段js代码怎么放在视图中呢?

  • 回复于 2011-08-27 13:08 举报

    我现在点击《批量删除》提示“请选择要删除的关键字”,不管选择还是没有选择都提示这个。我查看了checkboxr的名字,js代码都正确无误,可是为什么获取不到checkbox的值呢?我真是想不明白呀?(我使用了楼主提供的代码)

  • 回复于 2011-08-29 09:09 举报

    是不是checkbox的属性没取到?

  • 回复于 2011-09-02 11:16 举报

    把data中的数据输出来看看

  • 回复于 2011-09-02 16:14 举报

    data 输出出来就是 表的ID , 选中复选框的值

    但这断代码似乎发送不了到 控制层里去?

    这个用AJAX发送, 怎么知道有没有发送到控制层, 谢谢楼主解答

  • 回复于 2011-09-02 16:43 举报

    问题解决 , 特来感谢楼主, 楼主代码成功运用

  • 回复于 2011-09-02 17:53 举报
    public function init()
    {   
        parent::init();   
        Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/css/my.css');
        Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/css/my.js');
    }
    

    我想问下 载入这个CSS和JS是哪个类 文件

  • 回复于 2011-09-02 17:56 举报

    就是载入也没头部和尾部····

  • 回复于 2011-09-07 16:28 举报

    点击删除后,没反应,错误提示,
    SCRIPT5007: 无法获取属性“loadingClass”的值: 对象为 null 或未定义
    jquery.yiigridview.js, 行167 字符3
    数据是删除了,刷新后才看到删除成功,为啥?

  • 回复于 2011-09-14 17:23 举报

    我也会去研究一下啊

  • 回复于 2011-09-16 11:08 举报

    多谢楼主的传授!

  • 回复于 2011-09-16 11:09 举报

    翻页了!

  • 回复于 2012-03-31 15:02 举报
    <script type="text/javascript">
        var GetCheckbox = function (){
            var data=new Array();
            $(":checkbox:checked").each(function (){
                data.push($(this).val());
            });
            if(data.length > 0){
                //alert(data);
                $.ajax({
                    url:"<?php echo $this->createUrl('target/mutidelete');?>",
                    type:"POST",
                    data:{'select[]':data},
                    success:function(data){
                        $.fn.yiiGridView.update('target-grid');
                    }
                    });
            }else{
                alert("请选择要删除行!");
            }
        }
          
    </script>
    

    仿自楼主 哈哈 没有楼主的严谨 经测好使

  • 回复于 2012-03-31 21:11 举报

    非常好,顶楼上!

  • 回复于 2012-04-20 09:44 举报
    <?php echo CHtml::normalizeUrl(array('/admin/words/delall/'));?>
    

    这段在js中,如何转化成对应的URL呢?

  • 回复于 2012-07-30 10:41 举报

    遇到问题了就看看这个讨论
    心血来潮 10:41:59
    http://www.yiichina.com/topic/469
    我也是遇到这个问题

    我现在点击《批量删除》提示“请选择要删除的关键字”,不管选择还是没有选择都提示这个。
    舰长妹夫㊣(8323216) 10:43:33
    看js呀

    var data=new Array();
            $("input:checkbox[name='selectdel[]']").each(function (){
                    if($(this).attr("checked")==true){
                            data.push($(this).val());
                    }
            });
    var GetCheckbox = function (){
            var data=new Array();
            $("input:checkbox[name='selectdel[]']").each(function (){
                    if($(this).attr("checked")==true){
                            data.push($(this).val());
                    }
            });
            if(data.length > 0){
    

    心血来潮 10:43:58
    if($(this).attr("checked")==true)这句话没通过
    舰长妹夫㊣ 10:44:39
    alert $(this).attr("checked")
    如果输出 true和false 你就用 if($(this).attr("checked")==true)
    调试一下就好了
    心血来潮 10:45:50
    输出checked……
    舰长妹夫㊣ 10:46:29
    如果输出 checked 你就用 if($(this).attr("checked")=='checked')
    心血来潮 10:46:43

  • 回复于 2012-08-22 09:52 举报

    :) 好的

  • 回复于 2012-08-23 17:16 举报

    代码等我研究下

  • 回复于 2012-10-16 15:29 举报

    为什么报告 GetCheckbox未定义 错误?????
    我在Controller里导入javascript了啊?????
    求大神解答

  • 回复于 2012-12-21 16:46 举报

    删除数据成功了,但是没有跳转没有刷新本页面??请问是什么问题??

您需要登录后才可以回复。登录 | 立即注册