WEB项目总结-完全分页组件

来源:互联网 发布:知天气福建版 编辑:程序博客网 时间:2024/05/16 18:00


http://www.yeeoh.cn/newpk
终于完成了这个项目:框架设计,页面设计,后台设计,交互设计,后台代码,前台页面代码,前台交互代码,数据库设计,数据录入,压力测试,容错测试,交互测试,修改,补丁,完全由一个人做完,中间还要到处跑生意.我想应该做的不错了.

整个项目前后台大量使用了AJAX技术,不过看了看,和我的首页比,有点小儿科,不过毕竟是商业产品网站,做的过于花哨,反到起不好的作用.想想当年在公司,一个WEB项目,前前后后,大批人加入,所有细节都分工到位,居然还搞了三个月,最后还成了豆腐渣工程,心寒啊.

有兴趣的朋友可以谈谈这个项目的价值几何.
因为之前有些人总是认为我只会忽悠AJAX,呵呵,我能拿出来的东西好像不止AJAX一种吧...
还有个人居然说,给某个人一个月时间学会AJAX,就留住他,更有某些人,看看那个招聘信息,我无语了.真把我当程序员看,哈哈.
这个项目虽然没有与其他架构联合,但是整个控制流程我本人感觉已经趋于某种完美了,毕竟我相信用过这套系统的人,不会有人说太多不人性化的话,我能想到的人性化基本全部写进去,然后个人又把流程每个细节都过了至少三次,哎,我想这是我人生中最后一次操技术活了,将来这些东西,估计能丢的全要丢了.因为这个东西让我很伤心,我自认为个人做事总是趋于完美主义,可是那些不懂技术的管理人员却暴殄天物,居然和他说个不字,就严厉打击报复,殊不知,三十年河东,三十年河西,既然你认为技术活是低贱的,而你又认为你的管理很出众,那么好,我奉陪,在技术上我敢说完全超过某些人,这样,我放下技术,重头来,就算是做管理我也不输于任何人.

我记得事件的开端就是我说的两个字:垃圾.骂的好,今后我还是把他当垃圾.
不过我再次也要强调一下,并不是我个人偏激,往往一件事情要解决,做错的一方道个歉,其实也就没什么了,不过在我没有收到那个道歉之前,那么这件事情不会就此平息.

而事件开端的开端,我可以完全保证,绝对是为公事,并且绝对是为公司利益着想.

下面给出这个项目中我认为最满意的控件,加强的分页控件.

程序代码 程序代码

//分页控制
//参数分别为:RS对象,每页显示条数,页码指向的链接,当前页码
function Pages(rsObj,pagesize,url,num){
    var pageContent
    rsObj.PageSize = pagesize
//如果当前没有页码,默认指向第一页
    if(!$r(num) || $r(num) == "" || $r(num).Count ==0 || $r(num)<1){
        num = 1;
        rsObj.AbsolutePage = 1;
//否则指向该页码
    }else{
        num = Number($r(num)+"");
        rsObj.AbsolutePage = num
    }
//计算总页数:为什么不用RS.PageCount,因为之后要自动调整每页显示条数
//否则页码总数计算会出错
    var pageCount = Math.ceil(rsObj.RecordCount/pagesize)
    pageContent = pageNum(rsObj,pageCount,url,num)
    return "共 "+pageCount+"页 / "+rsObj.RecordCount+" 条记录 "+pageContent
}
//开始计算页码
function pageNum(rsObj,pgCont,url,num){
    var CS,CSL,CSR,z,cont,thisContent="",maxPageNum=10
//当限制每次显示的页码条数时,计算共有多少组页码
    CS = Math.ceil(pgCont/maxPageNum)
//计算当前组页码的最大页数
    CSR = Math.ceil(num/maxPageNum)
//计算当前组页码的最小页数
    CSL = (CSR-1)*maxPageNum
//当前页码为最后一组
    if(CS == CSR){
//因为最后一组页码不可能于所剩记录条数相等,所以要做一下容错
        if(pgCont%maxPageNum == 0){
            cont = CSL+maxPageNum
        }else{
            cont = CSL+(pgCont%maxPageNum)
        }
    }else{
        cont = CSR*maxPageNum
    }
//当前页面为最后一页,并且记录数不等于默认显示记录数时,重新写入记录数
    if(num == pgCont && rsObj.RecordCount%rsObj.PageSize != 0){
        rsObj.PageSize = rsObj.RecordCount%rsObj.PageSize
    }
    CSL += 1
//设置首页,上一页
    if(num > 1){
        thisContent += pgUrl(url,1,"首页")+pgUrl(url,(num-1),"上一页")
    }else{
        thisContent += "<span>首页</span><span>上一页</span>"
    }
//前后页组
//如果当前页码不为第一组则显示跳到上组页码链接
    if(CSR > 1){
        thisContent += pgUrl(url,(CSL-maxPageNum),"[...]")
    }//else{
    //    thisContent += "<span>[...]</span>"
    //}
//循环打出本组页码
    for(z=CSL; z<=cont; z++){
        thisContent += checkTO(z,num,url)
    }
//如果当前页码不为第一组,并且还有下组页码则显示跳到下组页码链接
    if(CSR < CS){
        thisContent += pgUrl(url,(cont+1),"[...]")
    }//else{
    //    thisContent += "<span>[...]</span>"
    //}
    if(num != pgCont){
        thisContent += pgUrl(url,(num+1),"下一页")+pgUrl(url,pgCont,"尾页")
    }else{
        thisContent += "<span>下一页</span><span>尾页</span>"
    }
    return thisContent
}
//判断是否在本页或本组
function checkTO(pageSort,num,url){
    if(pageSort == num){
        return "<span class='default'>["+pageSort+"]</span>"
    }else{
        return pgUrl(url,pageSort,"["+pageSort+"]")
    }
}
//不在本页或本组给出链接
function pgUrl(url,num,txt){
    return '<a href="'+url+'page='+num+'">'+txt+'</a>'
}