请教一个客户端显示复杂页号的办法?
怎样实现阿里巴巴那样的分页?http://search.china.alibaba.com/search/company_search.htm?province=%C9%CF%BA%A3&biztype=1&begin_page=25   
 想法是客户端有一个专门生成“页号列表”的方法,给这个方法传入总记录数、总页数,该方法生成页号。
------解决方案--------------------我写过这样的页号,不过现在没有代码。写一下算法: 
 1.设定一个showCount,表示最多显示多少个页号。 
 假如showCount=9,且页面数不小于30页,那么第一页显示: 
 共xxx条记录,yyy页 (1) 2 3 4 5 6 7 8 9 > >  > | 
 第25页显示 
 共xxx条记录,yyy页 | <  < < 21 22 23 24 (25) 26 27 28 29 > >  > |   
 2.当前页信息需要包括: 
 pageSize:每页多少条记录 
 currentPage:当前第几页(从0开始) 
 totalSize:共有多少条记录 
 pageSize和currentPage是页面或自己设的,totalSize这个很容易从数据库取到。   
 这样我们可以计算出一共有Math.ceil(((double)totalSize)/((double)pageSize))页 
 于是解决了 "共xxx条记录,yyy页 "的部分   
 3.然后我们计算需要显示的第一个页号和最后一个页号,这个要同时计算 
 初始 pageCount = 前面计算的页数 
 a. firstPage = currentPage - (showCount/2);  // 显示当前页前面的页号 
 b. if(firstPage  < 0) firstPage = 0; // firstPage不小于0 
 c. lastPage = firstPage + showCount; // 注意:lastPage并不会显示 
 // 比如firstPage=0,lastPage=9,只会显示从0-8 
 d. if(lastPage >  pageCount) { 
        lastPage = pageCount;   // lastPage不能比总页数大 
        firstPage = lastPage - showCount    // 尽可能多显示页号 
        if(firstPage  < 0) firstPage = 0;    // firstPage不小于0 
     }   
 4. 最后我们在页面上显示页号 
 a. 如果firstPage> 0,那么显示 | < 效果是currentPage = firstPage - 1; 
 b. 如果currentPage> 0, 那么显示  < < 效果是currentPage = currentPage -1; 
 c. for(int i=firstPage; i <lastPage; i++) 
        显示(i+1) 效果是currentPage = i; 
 d. 如果currentPage <pageCount-1, 那么显示 > >  效果是currentPage = currentPage + 1; 
 e. 如果lastPage <pageCount-1, 那么显示 > | 效果是currentPage = lastPage;   
 算法结束