就分页的技术来看,无非是分两种:


一。通过存储过程来实现


     此点,暂时不讲,因为网上文章很多,迟一下再发表我的意见。


二。通过页面代码来实现


    我之前在网上看到一个文章,说的是为DATALIST分页,用的技术是viewstate保存分页信息,然后再通过这个信息(如当前是第几页,每页多少等)来实现分页。虽然能实现功能,不过,这一点明显是多此一举,究其原因,是由于没有深入认识。NET。其实。NET本身有一个PagedDataSource,它是从GridView里分离出来的分页代码封装,可以轻松实现分页。下面,就以DATALIST作为例子,看一下,他是怎样使用的:


用PagedDataSource实现分页_数据       

用PagedDataSource实现分页_数据以上代码省略

用PagedDataSource实现分页_数据 DataSet ds = db.ExecuteDataSet(dbc);

用PagedDataSource实现分页_数据        PagedDataSource pds = new PagedDataSource();//初始化分页源

用PagedDataSource实现分页_数据        pds.DataSource = ds.Tables[0].DefaultView;

用PagedDataSource实现分页_数据        pds.PageSize = 15;//每页显示的记录数

用PagedDataSource实现分页_数据    

用PagedDataSource实现分页_数据        pds.AllowPaging = true;//是否分页

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        pds.CurrentPageIndex = pageid - 1;//当前页数,因为从0开始,所以接收到的数减1

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        DataList1.DataSource = pds;//绑定数据源

用PagedDataSource实现分页_数据        DataList1.DataBind();//绑定数据

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        if (pds.IsFirstPage)

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据            hy1.Visible = false;

用PagedDataSource实现分页_数据        if (pds.IsLastPage)

用PagedDataSource实现分页_数据            hy2.Visible = false;

用PagedDataSource实现分页_数据        int pg;

用PagedDataSource实现分页_数据        int showp = 10;//显示多少页

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据       

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        string pgstr;

用PagedDataSource实现分页_数据        pgstr = " ";//分页显示代码

用PagedDataSource实现分页_数据        int startp;//开始页数

用PagedDataSource实现分页_数据        int nowp;

用PagedDataSource实现分页_数据        nowp = pds.CurrentPageIndex + 1;

用PagedDataSource实现分页_数据        int totalp;

用PagedDataSource实现分页_数据        totalp = pds.PageCount;//得到总页数

用PagedDataSource实现分页_数据        //   startp = 1;

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        if (nowp % showp == 0)//是否等于上限

用PagedDataSource实现分页_数据_37用PagedDataSource实现分页_分页_38        用PagedDataSource实现分页_封装_39{

用PagedDataSource实现分页_初始化_40            startp = pds.CurrentPageIndex + 2;

用PagedDataSource实现分页_初始化_40

用PagedDataSource实现分页_初始化_40            if (totalp > (nowp+showp))

用PagedDataSource实现分页_分页_43用PagedDataSource实现分页_数据_44            用PagedDataSource实现分页_封装_39{

用PagedDataSource实现分页_初始化_40

用PagedDataSource实现分页_初始化_40                pg = (nowp+showp);

用PagedDataSource实现分页_分页_48            }

用PagedDataSource实现分页_初始化_40            else

用PagedDataSource实现分页_初始化_40                pg = totalp;

用PagedDataSource实现分页_初始化_40

用PagedDataSource实现分页_分页_52        }

用PagedDataSource实现分页_数据        else

用PagedDataSource实现分页_数据_37用PagedDataSource实现分页_分页_38        用PagedDataSource实现分页_封装_39{

用PagedDataSource实现分页_初始化_40            startp = Convert.ToInt16((nowp) / showp) * showp;

用PagedDataSource实现分页_初始化_40            pg = startp + showp;

用PagedDataSource实现分页_初始化_40

用PagedDataSource实现分页_分页_52        }

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        if (startp == 0)

用PagedDataSource实现分页_数据_37用PagedDataSource实现分页_分页_38        用PagedDataSource实现分页_封装_39{

用PagedDataSource实现分页_初始化_40            pg = showp;

用PagedDataSource实现分页_初始化_40            startp = 1;

用PagedDataSource实现分页_分页_52        }

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据      //  Response.Write(pg);

用PagedDataSource实现分页_数据      //  Response.End();

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        for (int p = startp; p <= pg; p++)//循环显示页数,并生成相应的URL

用PagedDataSource实现分页_数据_37用PagedDataSource实现分页_分页_38        用PagedDataSource实现分页_封装_39{

用PagedDataSource实现分页_初始化_40            if ((nowp) == p)

用PagedDataSource实现分页_初始化_40                pgstr = pgstr + "    " + p;

用PagedDataSource实现分页_初始化_40            else

用PagedDataSource实现分页_初始化_40                pgstr = pgstr + "    <a href=\"" + Request.CurrentExecutionFilePath + "?PageID=" + Convert.ToString(p) + "&RootID=" + Convert.ToString(root_id) + "\">" + (p) + "</a>";

用PagedDataSource实现分页_分页_52        }

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        fromto.Text = pgstr;

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        //  hy1.Text=Request.CurrentExecutionFilePath+"?pageIndex="+Convert.ToString(CurrentPage+1); 

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        hy1.NavigateUrl = Request.CurrentExecutionFilePath + "?PageID=" + Convert.ToString(pageid - 1) + "&RootID=" + Convert.ToString(root_id);

用PagedDataSource实现分页_数据        hy2.NavigateUrl = Request.CurrentExecutionFilePath + "?PageID=" + Convert.ToString(pageid + 1) + "&RootID=" + Convert.ToString(root_id);

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据        Label1.Text = Convert.ToString(pds.PageCount);

用PagedDataSource实现分页_数据

用PagedDataSource实现分页_数据以下代码省略