select all 和 分页的搭配结合

一:select all按钮点击事件   记录一个全局变量globalselectall来记录op是否选中过  
因为这个按钮的选中状态除了op点击,还会存在下面的按钮取消影响这个select all按钮

二:根据全局变量 揣摩出op想法 然后将点击分页的时候将这个状态随着,说白了就是第二页的时候如果之前点过全选
       那么第二页也要都选中

三:个别选中后取消

所有的数据用一个隐藏域保存 id 
选中后取消 根据全局变量和当前状态 判断出对象 然后 放入一个  隐藏域取消  中保存   因为数据点分页会变换

四:保存取消状态   
   根据那个隐藏域记录的id,全局变量,也就是说选中状态下的遍历的时候去判断隐藏域中id 有没有匹配有的话就不选中

五:以search 为分离    每次都是search 出来的数据 作为一个处理模块   当更改条件后再次search  保存 全选后取消的
那个隐藏域的值要清空

六:删除 也根据全局变量来  
如果删除批量那么  对比 所有数据隐藏域 和 全选后取消的数据隐藏域
对比字符串  将 全选后取消的数据隐藏域中保存的值就行处理 到集合中 遍历,然后所有的数据 将这个id replace掉

js事件总和:
一:点击 select all 总按钮事件  
1要把当前页面小按钮状态改变 
2根据自身状态衍生出一个全局变量来代表是否点击过全选
3自身状态是选中的话 也就是之前全选后排除的也要重新选上,
      也就是把保存排除的值清空以及隐藏域 不保留排除的状态
var globalselectall ="";
 function selectallPromotioncode(obj) {

if ($(obj).bootstrapSwitch('state') == true) {
        $(".PromotionDel").each(function () {

$(this).bootstrapSwitch('setState', true);
            $(this).parent().attr("class", "checked");

});
        $("#hidselectcancle").val("");//设置清空 记录全选后又取消的值 id

arrcanleids = "";//设置清空 记录取消值清空
        //决定全局满足数据的变量
        globalselectall = "yes";
    }
    else {
        $(".PromotionDel").each(function () {

$(this).bootstrapSwitch('setState', false);
            $(this).parent().removeAttr("class");
        });
        //决定全局满足数据的变量
        globalselectall = "no";
    }

}

二:小按钮点击事件
1  自身状态要是没选中  总按钮一定要变成没选中
2  用变量记录下来全选后取消的id    然后赋值给隐藏域
3  全选后取消后又自己手动点小按钮加上  变量要去掉此id

var arrcanleids = "";
function changechecked(obj) {   
    //除了取消状态 还要把全选之后取消的 id给记录下来
    if (globalselectall=="yes") {
        if ($(obj).bootstrapSwitch('state') == false) {
            $("#chkall").bootstrapSwitch('setState', false);
            $("#chkall").parent().removeAttr("class");
            //记录下来  全选后取消的id
            arrcanleids += "," + $(obj).val();
        }
        else {
            //全选之后取消后又加上的
            arrcanleids = arrcanleids.replace("," + $(obj).val(), "")
        }
       
        //把取消的id 值 都记录到隐藏域中
        $("#hidselectcancle").val(arrcanleids);
    }
}

三:点击 search 和 分页事件
1区别search和分页  为什么 因为search之后的数据又是新一轮数据  跟之前的不搭嘎  需要清空那些全局变量,记录值
2而分页点击的时候 数据还是当前这一轮的数据 所以状态要保留 全局变量来决定翻页后是否显示选中状态
3ajax 加载数据
function SearchPromotion(pageIndex) {
    if (pageIndex==-1) {
        $("#chkall").bootstrapSwitch('setState', false);
        $("#chkall").parent().removeAttr("class");
        globalselectall = "no";//设置清空 全局变量为no 没选中状态
        $("#hidselectcancle").val("");//设置清空 记录全选后又取消的值 id
        arrcanleids = "";//设置清空 记录取消值清空
        pageIndex = 1;
    }
   
   
    var keyword = $("#txtKeywords").val();
    var fromDate = $("#txtFromDate").val();
    var toDate = $("#txtToDate").val();
    var dateType = $("#sltDateType").val();
    var key = $("#hidAdminKeyStr").val();//?adminkey=...
    var keys = key.substring(1);//adminkey=..
    var ConfirmationID = $("#txtConfirmationID").val();
    //var url = "/AffordableWorld/PackageInfo/GetPromotion" + key + '&menuId=' + $('#hidMenuId').val();
    var url1 = keys + '&menuId=' + $('#hidMenuId').val() + '&isselectall=' + globalselectall;//要求全选的时候 所有满足页码都选中  所以增加一个状态判断条件
    if (keyword != null && keyword != "") {
        url1 += "&keyword=" + keyword;
    }
    if (fromDate != null && fromDate != "") {
        url1 += "&from=" + fromDate;
    }
    if (toDate != null && toDate != "") {
        url1 += "&to=" + toDate;
    }
    if (ConfirmationID != null && ConfirmationID != "") {
        url1 += "&confirmationid=" + ConfirmationID;
    }
    url1 += "&datetype=" + dateType;
    url1 += "&pageIndex=" + pageIndex;
    //$("#tbPromotion").load(encodeURI(url), function () {
    //    App.init();
    //});

$.ajax({
        xhr: function () {
            var xhr = new window.XMLHttpRequest();

// Download progress
            xhr.addEventListener("progress",
                function (evt) {
                    if (evt.lengthComputable) {
                        var percentComplete = evt.loaded / evt.total;
                        console.log(percentComplete);
                    }
                },
                false);

return xhr;
        },
        url: '/AffordableWorld/PackageInfo/GetPromotion',
        type: 'GET',
        data: url1,
        beforeSend: function () {
            $('.progress-bar').css('width', '15%');
            $('.progress').show();
        },
        success: function (result) {
            $('.progress-bar').css('width', '100%');

$('#tbPromotion').html(result);

setTimeout(function () { $('.progress').hide(); }, 500);
        }
    });
}

四:进行数据操作 拿删除为例
1:根据俩个隐藏域(一个是页面遍历数据的时候保存所有id的隐藏域)另一个是点击小按钮 记录全选取消后的id
2:根据全局变量判断 出 是批量还是页面处理
3:页面处理就删页面遍历出来的id总和
4:批量的话就根据俩个隐藏域记录的内容排除  一定要以 ,1,2,3 去比较 这样才能把,1 给replace掉
function DeletePromotion(e) {
    var deleteIds = "";//记录所有
    var calids = "";//记录排除的所有
    var s = "";
    var cal = ""
    var datelistlength = "";
    var key = $('#hidKey').val();
    //leo 更新 分为俩种情况  一种是selectall 也就是综合数据(好几页) 另一种是当前页面选中的数据(普通操作数据)
    //  全选状态又分两种 一种排除过 一种就是全选 没在排除过
    if (globalselectall == "yes") {
        //综合数据  所有的排除 取消的
        s = $("#idlist").val(); //所有数据 ,1,2,3
        cal = $("#hidselectcancle").val();//要排除数据  ,1
          
        if (s != "") {
            
            datelistlength = s.substring(1).split(',').length;//算删除的数量
            if (cal != "") { //  全选有排除的 那么吧俩个隐藏域内容传到控制器去对比排除
                deleteIds = s;
                calids = cal;                           
                var caldate = calids.substring(1).split(',').length;
                datelistlength = datelistlength - caldate;
            }
            else {
                deleteIds = s.substring(1);//全选没有排除的
            }
           
        }

}
    else {
        //当页数据
        $(".PromotionDel").each(function () {
            var choose = $(this).bootstrapSwitch('state');
            if (choose) {
                deleteIds += $(this).val() + ",";
            }
        });
        if (deleteIds!="") {
            deleteIds = deleteIds.substr(0, deleteIds.length - 1);
            datelistlength = deleteIds.substring(0, deleteIds.length - 1).split(',').length;
        }

}

if (deleteIds.length > 1) {
     
        var con = confirm("Sure you want to delete " + datelistlength + " message(s) ?") //提示信息加数量
     
        if (con) {
            $.ajax({
                type: 'POST',
                url: "/AffordableWorld/PackageInfo/DeletePromotion",
                data: { "ids": deleteIds, "calids": calids, "key": key },
                dataType: "text",
                beforeSend: function () { },
                completed: function () { },
                success: function (data) {
                    ShowMsgBox(data, "true");
                },
                error: function () { }
            });
        }
       
    }
}

控制器中进行双隐藏域内容的对比

//leo 新增 把全选之后取消的 id集合给排除掉
            string idStr = Request.Form["ids"];  //获取所有的id
            string idcalStr = Request.Form["calids"];     //获取全选后排除的id     
            if (idcalStr!="") //说明了是全选后又有排除的情况 也就是,1,2,3 要排除    ,1,3这种
            {
                var callist = idcalStr.Substring(1).Split(','); //1,3
                foreach (var item in callist)
                {
                    idStr = idStr.Replace("," + item, ""); //把,1  ,3替换成空 也就是剩下,2
                }
                idStr = idStr.Substring(1);//然后最终 2
            }

JS 批量删除(所有页面)相关推荐

  1. 批量删除-获取页面id-字符串拼接做法

    批量删除-获取页面id-字符串拼接做法 做法思路 首先来说说思路,肯定是先在前端页面获取选中的复选框的数组,这是第一步,然后这里我想的是将数组直接拼接成字符串,将字符串传值给我后台已经做好的单个删除的 ...

  2. 用Auto.js批量删除空间说说

    最近翻看了初高中用的QQ空间,浓浓的中二气息,十分羞耻好笑,想全部删除掉,找了油猴脚本,可惜网页版删了十几条之后就会出现验证码,用不了了.好在手机端没有验证码,遂决定自己动手写一个auto.js的脚本 ...

  3. jsp页面中通过id批量删除

    通过id批量删除 1.页面js写法 //删除 function deleteWebsites(){ var length = $("input[name='checkbox']:checke ...

  4. 11月1日上午PHP批量删除

    1.在主页面上添加批量删除有关代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  5. 批量删除 Word、PPT 和 PDF 文件的第一页或某个特定页

    概要:有时候我们需要批量删除 Word 文件的第 1 页,如果只有一个文件我们可以手工删除就可以了,但是如果文件比较多,那么我们还能手工删除吗?能不能有一种简单的方法去批量删除这些 Word 文件的第 ...

  6. Bootstrap4+MySQL前后端综合实训-Day07-PM【用户信息管理页面——功能展示(分页显示数据、添加用户、批量删除用户、编辑用户信息)、servlet项目代码整理汇总】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 页面展示 分页显示数据 添加用户信息 (单个/批量)删除用户 编辑 ...

  7. js+jQuery获取全选并用ajax进行批量删除

    今天在处理后台的时候做了个小小的ajax处理批量删除的功能,给大家分享下. 1.在Repater绑定出放入单选 <input id="chkContentId" name=& ...

  8. 【项目实战】mybatis +vue.js 前后端交互批量删除

    单个删除功能已经实现了,批量删除弄了很久也没弄好,来试一下.弄了很久终于把批量删除实现了! 结果: 点击确认后,将看见表中已经少了两条数据. 实现的关键是:1.正确传递数据给后端的js语句 2.后端接 ...

  9. 如何批量删除PDF文件中的页面

    当我们想要批量删除PDF文件中的页面时,我们需要怎么做呢?在工作中,PDF文件是很常见的,当我们在使用PDF文件时,想要删除PDF文件中的页面需要怎么做.今天小编就给大家介绍批量删除PDF文件中页面的 ...

最新文章

  1. 元宇宙,分三层!香港中文大学再现「校园元宇宙」原型
  2. qgridlayout 动态刷新
  3. 预测2019:数据中心将有哪些变化
  4. 中间件及tomcat的内存溢出调优
  5. mysql 建索引_mysql数据库正确建立索引及使用
  6. redis 源码阅读
  7. angularjsl路由_AngularJS实现路由实例
  8. java什么是子类_java什么是子类?
  9. 第94:受限玻尔兹曼机
  10. python中坐标怎么表示_如何在Python中以像素表示(有限)平面上的坐标
  11. 求助:现在有一个可以进体制“养老”的坑,我该不该跳?
  12. IBM:云存储三步走
  13. 【腾讯云】企业认证题库200题
  14. 浏览器扩展插件:「油猴」使用详解 ( Tampermonkey )
  15. 四六级成绩批量查询器
  16. Q3手机银行运营报告:直销银行江湖再起波澜,数字员工助力手机银行活跃度提升
  17. ChatGPT爆火背后的真相:学编程已经成为必选项
  18. Ubuntu-20.04 LTS 更换国内163源、阿里源、清华源、中科大源
  19. 【渝粤教育】电大中专电子商务网站建设与维护 (4)作业 题库
  20. 电子商务网站开发流程

热门文章

  1. Openstack容器项目之Magnum
  2. SD卡/MMC卡学习视频教程
  3. Python模糊基础点--文件操作
  4. 系统中计算机应用上机,管理系统中计算机应用上机题
  5. 云计算基础与应用 第六章 数据库
  6. 高度塌陷的产生原因及解决方法
  7. EXCEL密码VBA解决
  8. 快速加速计算机的方法,如何让电脑提速50%以上?这三招就够了!
  9. 飞用计算机怎么弹,简单几个操作,让你的电脑提速飞起来
  10. Linux ubuntu修改软件源为国内源;解决apt install、PPA源太慢;