zoukankan      html  css  js  c++  java
  • .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="#F7F7F7" oldValue="#FFFFFF">

    </ asp:DataGrid>

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

             {

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

                  if(!Page.IsPostBack)

                  {

                       GetLog();

                  }

             }

    private void GetLog()

             {

                  string strsql;

    //统计总的记录数

                  SqlConnection Conn = 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;                               

                  SqlConnection Conn = 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());

             }

  • 相关阅读:
    输入一个1-9的数i,再输入一个数字n,表示 i 出现的次数,输入的2个数字 i 和 n 组合成如下表达式:如i=2,n=4,2+22+222+2222=?,计算结果是多少?
    现有数列1/2;2/3;3/5;5/8······第十次出现的是什么?
    猜数游戏:范围时1-100,若错误就提示大了还是小了,猜对则结束,允许猜10次,游戏结束后对玩家评价:1次猜对;5次内猜对;10次内猜对;没有猜对
    登录模拟,用户名和密码输入错误后给出相关错误提示,并告知还有多少次错误机会,如果5次验证失败将冻结账户
    30人围坐轮流表演节目,按顺序数1-3,每次数到3的人就表演节目,表演过的人不再参加报数,那么在仅剩一个人没有表演的时候,共报数多少人次?
    docker 自定义镜像
    php 镜像richarvey/nginx-php-fpm的ngnix配置
    php tp5常用小知识
    php Tp5下mysql的增删改查
    php 面试常问问题
  • 原文地址:https://www.cnblogs.com/meetweb/p/316645.html
Copyright © 2011-2022 走看看