AtomDream
---小时侯喜欢年轻漂亮的女孩, ------长大了依然喜欢年轻漂亮的女孩
不知道这种分页有什么弊端,请各位指点,
个人觉得要多少才取多少挺好的!
string getnum = Request.QueryString.Get("num");//获取传递过来的“前一页最后一个数据的id”
        string getpage ="1";//初始化页数为一,作用是不能点击当前页
        
//获取当前页的页码
        if (Request.QueryString.Get("page"!= "" && Request.QueryString.Get("page"!= null)
        
{
            getpage 
= Request.QueryString.Get("page");
        }

        
        
string select = "select top 3 id,name from holdword where id>=1";//首次选取前三条数据,每页显示三条数据
        
//选取页数后读取那页的三条数据
        if (getnum != "" && getnum != null)
        
{
            select 
= "select top 3 id,name from holdword where id>" + getnum;
        }


        OleDbDataReader datareader 
= users.DataReader(select);//自定义类的一个方法,只是用于读取数据,请自行编写
        
//显示读取出来的3条数据
        while (datareader.Read())
        
{
            Response.Write(datareader[
0].ToString()+",");

        }

        
string selectcount = "select count(*) from holdword";//读取数据库条目数
        int count = Convert.ToInt16(users.Scalar(selectcount));//自定义类的一个读取条目数
        
//计算总页数
        int pages = count / 3;
        
if (count % 3 != 0)
        
{
            pages 
= (count / 3+ 1;
        }

        
//Response.Write(pages);
        string reurl = Request.Url.ToString();//获取当前页的地址

        
//下面方法比较笨,作用是为了获取页不带参数的地址,只会用去掉?后面的字符串的方法
        string url = reurl;
        
string[] label = new string[pages+1];//定义一个数组大小为页数
        label[0= "0";
        
if (reurl.IndexOf("?page"> -1)//如果地址含有?page表示是选页后的地址
        {
            Regex delimit 
= new Regex("\\u003F");//用?进行分隔字符串,获取前面部分,越看越觉得此法很笨 
            string[] urlall = delimit.Split(reurl);
            url 
= urlall[0];//终于获得纯地址
        }

        
//下面是定义每个页面链接传递的参数,有页数page和前一页的最后一条数据的id
        string getnumpage = "0";

        
for (int i = 0; i < pages; i++)
        
{


            select 
= "select top 3 id,name from holdword where id>" + getnumpage;

            datareader 
= users.DataReader(select);
            
//把最后一个数据的id
            while (datareader.Read())
            
{

                label[i
+1= datareader[0].ToString();//把每页的最后一个数据id放到num中传递到下一页
                getnumpage = datareader[0].ToString();
                

            }

            
            
//Response.Write(label[i]);
            
//Response.Write(getnumpage);
        }

        
//下面作用是使当前页不可按并把label数组的值放到每个链接的num参数中
        
//Label3.Text = "<a href=\""+url+"?page=1&num=0\">1</a>,";
        for (int i = 1; i <= label.Length-1;i++ )
        
{
            
if (i == Convert.ToInt16(getpage))
            
{
                Label3.Text 
+= i.ToString() + ",";
            }

            
else
            
{
                Label3.Text 
+= "<a href=\"" + url + "?page=" + i.ToString() + "&num=" + label[i-1].ToString() + "\">" + i.ToString() + "</a>.";
            }

        }

posted on 2007-04-25 20:50  塞尔  阅读(266)  评论(0编辑  收藏  举报