打印本文 打印本文 关闭窗口 关闭窗口
ASP.NET分页组件学与用——教学篇
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2926  更新时间:2009/4/23 10:41:51  文章录入:mintao  责任编辑:mintao
int min;//要显示的页面导航数最小值

int max;//要显示的页面导航数最大值

 

设计时,需要考虑三种情况:

1:如果当前页除以ShowPages余数为0,也就是恰好可以整除的话,页面导航数字最小值和最大值分别是:

min最小值 = 当前页 + 1

max最大值 = 当前页 + 页面导航数字个数(ShowPages)

对应代码:

if(this.CurrentPage % this.ShowPages == 0) //如果恰好整除

    {

        min = this.CurrentPage + 1;

        max = this.CurrentPage + this.ShowPages ;

}

2:如果当前页是导航数字最小值时,应该切换到前一组导航数字。此时,导航数字的最小值和最大值分别是:

min最小值 = (((int)当前页 / 页面导航数字个数ShowPages ) - 1) *页面导航数字个数ShowPages +1;

max最大值 = 当前页 –1

对应代码如下:

else if(this.CurrentPage % this.ShowPages == 1 && this.CurrentPage > this.ShowPages )

    {

        min = (((int)this.CurrentPage / this.ShowPages ) - 1) * this.ShowPages +1;

        max = this.CurrentPage - 1;

}

 

3:如果当前页是导航数字最大值时,应该切换到后一组导航数字。此时,导航数字的最小值和最大值分别是:

min最小值 = ((int)当前页 / 页面导航数字个数ShowPages) * 页面导航数字个数ShowPages + 1

max最大值 = (((int)当前页 / 页面导航数字个数ShowPages) +1) * 页面导航数字个数ShowPages

对应代码如下:

else

    {

        min = ((int)this.CurrentPage / this.ShowPages) * this.ShowPages + 1;

        max = (((int)this.CurrentPage / this.ShowPages) +1) * this.ShowPages;

}

 

即然导航数字列表的最小值和最大值都计算出来了,所以我们通个做一个循环操作就可以生成该导航,当前页用斜体和红色字体突出显示:

for(int i = min ; i <= max ; i++)

{          

    if(i <= this.Pages)//只有不大于最大页才显示

    {

        if(this.CurrentPage == i)//如果是当前页,用斜体和红色显示

        {

            numberStr = numberStr + "<a href=" + AbsUrl + "?currentPage=" + i.ToString() + ">" + "<I style=''''color:red''''>" + i.ToString() + "</I>" +"</a>" + "\n";

        }

        else

        {

            numberStr = numberStr + "<a href=" + AbsUrl + "?currentPage=" + i.ToString() + ">" + i.ToString() +"</a>" + "\n";

        }

    }

}

大家应该看出来了,在导航列表的最前面和最后面一共还有四个图标,这几个图标并不是图片,而是7348四个数字的Wedding字体。这四个图标的代码如下:

//第一页,上一页,下一页,最后一页

string First,Previous,Next,Last;

First = AbsUrl + "?currentPage=1";

/////////

if(this.CurrentPage == 1)

    Previous = AbsUrl + "?currentPage=1";

else

    Previous = AbsUrl + "?currentPage=" + (this.CurrentPage - 1).ToString();

/////////

if(this.CurrentPage == this.Pages)

    Next = AbsUrl + "?currentPage=" + this.Pages;

else

    Next = AbsUrl + "?currentPage=" + (this.CurrentPage + 1).ToString();

/////////

Last = AbsUrl + "?currentPage=" + this.Pages;

上一页  [1] [2] [3] [4] [5]  下一页

打印本文 打印本文 关闭窗口 关闭窗口