.Net 分页实现系列之二基于sql语句分页的方式

  Sql 语句。很多情况下都是基于 Select Top  {0} *  From T_O_Log Where  Id Not in ( Select Top {1} Id From T_O_Log  Order By ID Desc ) Order By ID Desc

  其基本原理是获取总数M条记录,而通过m条记录获取所需分页的n条最前的记录。

例如 分页中每页为10条记录,现在要跳转到10页去。那么总要获取的纪录为100条,而我们所需要的其实是最后的10条记录而已。所以前面的90条记录抛弃。

为了实现的方便,该例子是用aspnetpager做为显示页码和分页转向,当然你也可以自己写上一页、下一页的转向工作

实现方法如下
第一步,从工具箱Web窗体〉拖拉出DataGrid控件(或者是DataList 等等)

<asp:DataGrid id="DataGrid1" runat="server" Width="100%" AutoGenerateColumns="False" singleValue="#F<?xml:namespace prefix = st1 />7F7F7" oldValue="#FFFFFF">

</ asp:DataGrid>

 第二步 双击该窗体,进入codebehide
 private void Page_Load(object sender, System.EventArgs e)

         {

              // 在此处放置用户代码以初始化页面

              if(!Page.IsPostBack)

              {

                   GetLog();

              }

         }

private void GetLog()

         {

              string strsql;

//统计总的记录数

              SqlConnectionConn = new SqlConnection();

                   Conn.ConnectionString =@"server=MIS\PMSERVER;uid=sa;pwd=sa;database=test";

                   Conn.Open();

                   strsql=" Select count(ID) From T_O_Log";

                   DataSet ds = new DataSet();

                   SqlDataAdapter Adp = new SqlDataAdapter(strSql,Conn);

                   Adp.Fill(ds,"TypeIdList");                     this.AspNetPager1.RecordCount=System.Convert.ToInt32(ds.Tables[0].Rows[0][0]) ;

              BindData();

         }

private void BindData()

         {

              string strsql;            

              int RecordPage=(AspNetPager1.CurrentPageIndex-1)*AspNetPager1.PageSize;                               

              SqlConnectionConn = new SqlConnection();

                   Conn.ConnectionString =@"server=MIS\PMSERVER;uid=sa;pwd=sa;database=test";

                   Conn.Open();

                        strsql=String.Format(" Select Top  {0} *  From T_O_Log Where  Id Not in ( Select Top {1} Id From T_O_Log  Order By ID Desc) Order By ID Desc" ,AspNetPager1.PageSize.ToString(),RecordPage.ToString());
                   DataSet ds = new DataSet();

                   SqlDataAdapter Adp = new SqlDataAdapter(strSql,Conn);

                   Adp.Fill(ds,"TypeIdList");

              this.DataGrid1.DataSource=ds.Tables["T_O_Log"];

              this.DataGrid1.DataBind();          

              //动态设置用户自定义文本内容

              adp.Dispose();            

              AspNetPager1.CustomInfoText="记录总数:<font color=\"blue\"><b>"+AspNetPager1.RecordCount.ToString()+"</b></font>";

              AspNetPager1.CustomInfoText+=" 总页数:<font color=\"blue\"><b>"+AspNetPager1.PageCount.ToString()+"</b></font>";

              AspNetPager1.CustomInfoText+=" 当前页:<font color=\"red\"><b>"+AspNetPager1.CurrentPageIndex.ToString()+"</b></font>";

         }

private void AspNetPager1_PageChanged(object src, Wuqi.Webdiyer.PageChangedEventArgs e)

         {           AspNetPager1.CurrentPageIndex=e.NewPageIndex;

              BindData();

              System.Text.StringBuilder sb=new StringBuilder("<script Language=\"Javascript\"><!--\n");

              sb.Append("var el=document.all;");

              sb.Append(this.DataGrid1.ClientID);

              sb.Append(".scrollIntoView(true);");

              sb.Append("<");

              sb.Append("/");

              sb.Append("script>");

              if(!Page.IsStartupScriptRegistered("scrollScript"))

                   Page.RegisterStartupScript("scrollScript",sb.ToString());

         }

转载于:https://www.cnblogs.com/meetweb/archive/2006/01/13/316645.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值