博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于分页选中问题-超越昨天的自己系列(9)
阅读量:6837 次
发布时间:2019-06-26

本文共 2566 字,大约阅读时间需要 8 分钟。

  

关于分页选中问题

 

  一些管理后台,可能会遇到这样的场景:几百条数据分页罗列出来后,需要最这些数据选中操作。比如我在第5页选中3条数据,返回到第4页再选1条,然后对4条数据进行处理。
  能想到的比较原始的做法是这样的:
  1,页面维持一个选中的数据容器
  2,每次新查询,或者翻页,这些数据传回后台,后台再传回页面(不要使用session)
  3,等到选择完毕后进行操作,就依照这个数据容器中的内容为准。
 
  那么页面上维护住这个所谓的数据容器是关键:
 
比如说页面中的每条数据类似这种形式,每条数据前都有个checkbox来供选择:
  
#foreach($temp in $!{blacklist})                                            $temp.phone                $!{dateUtil.formatDateTime($!temp.gmtLast)}                $!{dateUtil.formatDateTime($!temp.gmtFirst)}                $temp.loginCount                        #end

下面三个方法,就直接实现了这个容器的存取数据功能,依照这个基础,选中和不选中的操作就比较简单了

var selectPhones ='$!{selectPhones}'.split(",");var selectPhonesNum = $!{selectPhonesNum};function pushSelectPhone(phone){        if(checkSelectPhone(phone) == -1){            selectPhones.push(phone);            selectPhonesNum++;            jQuery("#selectPhones").val(selectPhones);            jQuery("#selectPhonesNum").val(selectPhonesNum);            jQuery("#showNum").html(selectPhonesNum);        }    }    function sliceSelectPhone(phone){        var index = checkSelectPhone(phone);        if(index != -1){            selectPhones.splice(index,1);            selectPhonesNum--;            jQuery("#selectPhones").val(selectPhones);            jQuery("#selectPhonesNum").val(selectPhonesNum);            jQuery("#showNum").html(selectPhonesNum);        }    }function checkSelectPhone(newPhone){        var index = -1;        for (var i=0;i<=selectPhones.length-1;i++) {             var oldPhone = selectPhones[i];            if(newPhone == oldPhone){                    index = i;                    return i;            }        }        return index;    }

然后只要对每个checkbox进行绑定事件就好了:

jQuery("input[name='chk_id']").click(function(){        var phone = jQuery(this).attr("value");        if(jQuery(this).attr("checked")){            pushSelectPhone(phone);        }else{            sliceSelectPhone(phone)        }    })

那么像全选啊,页面刷新进来的时候需要对这个页面已经选中过的数据表现为选中这些功能也是比较好实现了:

jQuery("#chk_all").click(function(){        if(jQuery(this).attr("checked")){            jQuery("input[name='chk_id']").each(function(index){                pushSelectPhone(jQuery(this).val());            })        }else{            jQuery("input[name='chk_id']").each(function(index){                sliceSelectPhone(jQuery(this).val())            })        }    })
jQuery("input[name='chk_id']").each(function(index){        if(checkSelectPhone(jQuery(this).val()) != -1){                 jQuery(this).attr("checked", "checked");         }    })

 

这个功能应该是比较常见的,这儿是我本人的一个思路和实现,暂时还没想出另外比较好的实现方式。

 

 

转载地址:http://hgmkl.baihongyu.com/

你可能感兴趣的文章
请求网络网络编程
查看>>
文件目录Android SDK目录结构
查看>>
Asp.net Web.Config - 配置元素customErrors
查看>>
Android: how to resolve Application’s parameter NullPointerException
查看>>
EntityFramework用法探索(二)CodeFirst
查看>>
人人都来写算法 之 快速排序
查看>>
[转]SQLServer和Oracle,存储过程区别,常用函数对比
查看>>
如何在ArcMap中监听键盘鼠标事件
查看>>
vs2012中程序集生成无法自动在网站Bin目录下生成Dll文件?(已解决!)
查看>>
fastDFS同步问题讨论
查看>>
ActiveMQ学习笔记(二) JMS与Spring
查看>>
实验室报告:VMware vSphere Data Protection
查看>>
php的数组与字符串的转换函数整理
查看>>
WCF 框架运行时类图
查看>>
spring配置异步执行
查看>>
软件开发报价的计算方法
查看>>
大型网站系统架构分析--转
查看>>
php 文件操作
查看>>
poj 1474 Video Surveillance - 求多边形有没有核
查看>>
c#接口和抽象类对比学习
查看>>