用asp写一个分页函数,每页显示10条记录,具有首页,上一页,下一页,尾页,当前页总页数等功能,谢谢了

用asp写一个分页函数,每页显示10条记录,具有首页,上一页,下一页,尾页,当前页总页数等功能,谢谢了,第1张

%

const MaxPerPage=10

'分页显示新闻个数

dim totalput,currentPage,TotalPages,typ,sql

typ=requestQueryString("type")

if typ<>"" then

if not isempty(requestquerystring("num")) then

currentPage=cint(requestquerystring("num"))

else

currentPage=1

end if

%>

<%

sql="select from news where news_type="&typ&" order by news_time desc"

rsopen sql,conn,1,1

totalPut=rsrecordcount

if rseof then

responsewrite "<p align='center'> 没有相关新闻</p>"

else

if currentpage<1 then

currentpage=1

end if

if (currentPage-1)MaxPerPage<totalPut then

rsmove (currentPage-1)MaxPerPage

showContent

showpages

end if

end if

if (currentPage-1)MaxPerPage=totalPut then

rsmove (currentPage-1)MaxPerPage

showContent

showpages

end if

%>

<%

sub showContent()

i=0

responsewrite "<div align=center><table width=100% border=0 cellspacing=0 cellpadding=0 > "

do while not rseof

responsewrite "<tr class=9p><td width=9% height=25 align=center valign=middle class=9red>★</td>"

dim url

if rs("news_jg")="1" then

url="news_detail1aspid=" & rs("id")

else

url="news_detail2aspid=" & rs("id")

end if

responsewrite " <td width=91% height=25 align=left valign=middle class=hand onClick=MM_openBrWindow('"&url&"','新闻','scrollbars=yes,resizable=yes,width=556,height=360')> "

if len(rs("news_title"))>20 then

responsewrite left(rs("news_title"),18)&""&"<"&year(rs("news_time"))&"/"&month(rs("news_time"))&">"

else

responsewrite rs("news_title")&"<"&year(rs("news_time"))&"/"&month(rs("news_time"))&">"

end if

responsewrite "</td></tr>"

i=i+1

if i>=MaxPerPage then

exit do

else

rsmovenext

end if

loop

responsewrite"</td></tr></table></div>"

end sub %>

<%

sub showpages()

dim n

if (totalPut mod MaxPerPage)=0 then

n= totalPut \ MaxPerPage

else

n= totalPut \ MaxPerPage + 1

end if

if n=0 then

responsewrite "<p align='right'>本类没有新闻</p>"

exit sub

end if

dim k

responsewrite "<div align=center><br>分页 >> "

if currentPage<>n then

for k=1 to n

if k=currentPage then

responsewrite"["+Cstr(k)+"]"

else

responsewrite"<a href=show_newsmoreaspnum="&cstr(k)&"&type='"&trim(rs("news_type"))&"'>[" &Cstr(k)&" ]</a>"

end if

next

responsewrite "</div> "

else

responsewrite "最后一页"&"<a href='#'onclick=javascript:historygo(-1)> 返回</a> "

end if

end sub

%>

<%

rsclose

set rs=nothing

connclose

set conn=nothing %>

if ($nextpg)

{

$pagenav="<a href='$urlpage=$nextpg'> 下一页</a>";

$pagenav=" 共("$pagenum")页";

//asd

echo "<br><div align=center><b>"$pagenav"</b></div>";

}

这里的问题,你的代码逻辑是判断是否有下一页,有就在导航条里面加上下一页的链接,然后加上共多少页,然后才输出。

这个逻辑在最后一页的时候,因为没有下一页了,这所有的都不会执行,当然你的导航条就不见了

你应该把共多少页以及输出导航条的代码拿出这个判断区域来,就可以了

第一次见过如此分页,你可以自己定义一个分页模型组件,来实现你的分页功能,你每次请求的时候,返回一个分页模型组件,这是我写的一个分页模型组件

package utiltool;

import javautilList;

/

自定义分页组件

@author 李鹏飞

/

public class PageModel {

private int currPage; //当前页

private int totalRecords; //总记录数

private List<> list; //结果集

private int pageSize; //每页记录数

public int getCurrPage() {

return currPage;

}

public void setCurrPage(int currPage) {

thiscurrPage = currPage;

}

public int getTotalRecords() {

return totalRecords;

}

public void setTotalRecords(int totalRecords) {

thistotalRecords = totalRecords;

}

public List<> getList() {

return list;

}

public void setList(List<> list) {

thislist = list;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

thispageSize = pageSize;

}

/

获取总页数

@return 总页数

/

public int getTotalPage(){

return (totalRecords + pageSize- 1) / pageSize;

}

/

获取第一页

@return 第一页

/

public int getFirstPage(){

return 1;

}

/

获取上一页

@return 上一页

/

public int getPreviousPage(){

return currPage <= 1 1 : currPage - 1;

}

/

获取下一页

@return 下一页

/

public int getNextPage(){

if(currPage >= getTotalPage()){

return getLastPage();

}

return currPage + 1;

}

/

获取最后一页

@return 最后一页

/

public int getLastPage(){

//如果总页数等于0返回1,否则返回总页数

return getTotalPage() <= 0 1 : getTotalPage();

}

}

我们之前在后台学过一个分页控件但是那个控件可以用在后端,因为后台不用考虑美观等等;但是分页在前台我们常常会根据自己的要求作出不同的改变,这时候再用分页控件就不太好了,因为一旦用了这个控件,分页栏的样式就很难更改(别人写的,都封装完了),所以这种真正展示给用户看的页面的分页我们通常自己写,自己来控制样式

①:我们知道,分页需要后台的数据支持和前台的样式处理那么后台应该做什么呢我们知道,要想在后台查询数据,前台应该给后台传入两个参数,分别是当前页码和每页显示的记录数;我们在前台把这两个参数封装在搜索条件选项里,在后台接收;首先进行的就是需要进行判断,如果这两个的值是空的话,我们应该给他们设置默认值,这样就不会出现没有数据的情况了

②:进行了判断之后,我们需要加上两个条件,才能在dao层完成分页,其实就是在query中设置值,分别是设置setOffset:从第几条记录开始查询(这个数的值是:(当前页-1)每页显示的记录数)和setRows(每页显示的记录数)

③:我们加上了条件之后,返回的数据中就会有关于分页的数据,我们定义一个Map集合,把关于分页的数据放进这个Map集合中就可以了;我们需要的数据是:总页数:getTotalPage 总记录数:getTotalElements 每页显示的记录数据:getContent  最后再返回这个amp集合,这样前台就能获取后台的分页数据了

①:其实这个分页的难点就在前台js的controller中的处理,我后台的返回结果中有总记录数和总页数了,我们想要在前台显示多少页,怎么控制呢很简单,我们如果有起始页和末尾页,然后我们根据这两个值进行遍历,然后把每个值放进同一个数组中,我们在前台页面用ng-repeat遍历取值就行了

②:那么我们就想了,我们想在前台页面框显示几页呢这就有了两种情况:一种是奇数,我们让当前页的前面和后面有这个奇数减去1再除以2,这样就有了我们想要的页数;另一种是偶数,偶数比奇数麻烦一点,我们采用一个规则:前面少,后面多,比如10页,我们就让当前页前4后5;这样一来,我们只要判断一下我们想要显示的页数的奇偶性,然后就能算出起始页了,末尾页就等于起始页加上显示页数-1就行了

③:要注意的事:我们要考虑集中情况:一种是当前页的前面不足我们想要的页数,我们就让起始页等于1;一种是当前页的后面不足我们想要的页数,我们就要让末尾页数等于总页数(最大页数);还有就是我们在设置了末尾页后,要重新设值初始页(因为如果当前页数后面不足我们想要的,那么一开始计算的初始页就是不对的,就会导致显示的页数不足),为了处理这种情况,我们利用末尾页减去要显示的页数-1,然后判断是不是小于等于1,是就让初始页等于1,大于1就让初始页等于末尾页减去要显示的页数-1

④:我们在js的controller中设置一个构建分页数据的方法,方法的参数是我们想要显示的页数,然后根据传入的数进行判断,用三元运算式进行赋值;得出初始页和末尾页,然后遍历望数组中放入值就可以了;这样一来,我们想要修改显示的页数,修改传入的数就行了

⑤:再就是处理上一页\下一页和页面跳转的功能,我们需要在js的controller中创建一个方法,这个方法是根据页码查询分页数据的方法,这个方法中首先是要判断传入的页码是不是小于1或者大于总页数,如果是就打断程序;如果不是就给搜索条件中的当前页赋值,然后在调用查询方法,加载分页数据

⑥:最后就在页面中的上一页\下一页和跳转页面的上面,添加ng-click调用我们根据页码查询的方法;还有一个不要忘了,就是我们点击当前页也加上方法,里面传入的是当前页码;还有不要忘了在查询方法中,在查询业务执行之前,把当前页进行一下parseInt的转换,防止传到后台的是字符串

其实做完上面的这些 *** 作,基本的功能都已经实现了,不过有一些小得bug或者功能需要去优化

①:第一个需要优化的就是:跳转之后,当前页不刷新的问题这个问题就是我们在上一个搜索结果中跳转完页面,比如说是共有10页,我们跳到第九页,然后我们再搜索下一个,如果这个搜索结果不足九页就不会显示;换句话说就是开启新的搜索时,当前页没有刷新,我们需要保证在每次开始搜索之前初始化一下当前页,所以在body标签中ng-init里让当前页为1就行了

②:上一页和下一页的disabled属性:这个属性是为了让我们的上一页在第一页的时候显示固定的样式,并且不能使用,同理下一页是在最后一页时失效;想要到达这个效果,我们控制上一页和下一页的disabled的出现时机就行了,我们用{{条件'disabled':''}}这样就能解决这个问题了

③:省略号的显示:如果起始页前面还有页码就显示省略号,没有就不显示;末尾页后面如果没有页码了,就不显示,还有就显示省略号为了好理解,我们在js的controller中创建两个变量,这两个变量开始的时候都是true,当起始页<=1或者末尾页>总页数时,改变对应的变量为false;然后在页面中的省略号位置,用ng-if调用对应的变量就行了

我们一个留言版或者文章系统等系统的时候,往往会出现太多的文章, 以致网页的美感大大形响了那有何办法呢下向我向大家写下一个分页教程,写得不好,望大家不要笑我毕竟本人也是第一次(会懂分页程序的高手建议看看便好,不要学习以免打乱你以往的编程习惯)^_^

程序例子: >

以上就是关于用asp写一个分页函数,每页显示10条记录,具有首页,上一页,下一页,尾页,当前页/总页数等功能,谢谢了全部的内容,包括:用asp写一个分页函数,每页显示10条记录,具有首页,上一页,下一页,尾页,当前页/总页数等功能,谢谢了、帮我看看php代码,分页导航,到了最后一页整个分页导航栏都消失了、jsp 中分页显示,按条的读取list已存的list.size()=20条元素,要实现每页一条数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9669571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存