【转】Net 分页实现系列之二基于sql语句分页的方式
2008-03-30 04:25
393 查看
本文转自:http://hi.baidu.com/maozilee/blog/item/99dc0cf49248a46ddcc47403.html
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()); |
相关文章推荐
- .Net 分页实现系列之二基于sql语句分页的方式
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【七】——实现资源的分页
- .Net 分页实现系列之一 DataGrid本身提供的分页方式
- .Net 分页实现系列之三---基于有查询条件的分页的方式 (1-13 11:38)
- asp.net用类似操纵Sql语句的方式快速实现Excel读写的方法(oleDB 方式)
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【七】——实现资源的分页
- 在SQL Server中通过SQL语句实现分页查询
- 解读ASP.NET 5 & MVC6系列教程(12):基于Lamda表达式的强类型Routing实现
- sql语句分页多种方式
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- SQL2005利用ROW_NUMER实现分页的两种常用方式
- BlogEngine.Net架构与源代码分析系列part3:数据存储——基于Provider模式的实现
- sql语句分页多种方式ROW_NUMBER()OVER
- 在SQL Server中通过SQL语句实现分页查询
- Asp.Net:分页sql语句的两种写法
- Oracle中实现分页的SQL语句
- 用类似操纵Sql语句的方式快速实现Excel读写的方法(oleDB 方式)-不使用OWC
- 使用传入的总记录数实现一条sql语句完成分页查询
- 实现分页的简单sql语句
- 用标准的SQL语句实现查询记录分页