(1)存储过程(SQL2000和2005下都可用):
使用:将存储过程中的Orders改为自己所要查询数据的表的名称,OrderID改为自己所用表中的标识字段(具有唯一值就可以)
存储过程测试:
(2)页面前台:
注:按钮中的文本设为"1"和"2"
(3)页面后台:
注:在两个翻页事件中利用了两按钮自身的文本值来保存参数,并相与影响
USE [Northwind] GO /****** 对象: StoredProcedure [dbo].[p_GetOrders] 脚本日期: 03/29/2010 23:00:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[p_GetOrders] @strWhere varchar(1500), -- 查询条件 (注意: 不要加 where) @PageSize int = 50, -- 页尺寸 @PageIndex int = 1, -- 页码 @PageCount int out, --总页数 @RecordCount int out --总记录数 AS BEGIN declare @strSQL varchar(5000) -- 主语句 declare @strTmp varchar(110) -- 临时变量 declare @strOrder varchar(400) -- 排序类型 select @RecordCount=count(*) from SaleInvoices select @PageCount=ceiling(@RecordCount/@PageSize) set @strTmp = '<(select min' set @strOrder = ' order by OrderID desc' if @PageIndex = 1 begin if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) +' * from Orders where ' + @strWhere + ' ' + @strOrder else set @strSQL = 'select top ' + str(@PageSize) +' * from Orders '+ @strOrder --如果是第一页就执行以上代码,这样会加快执行速度 end else begin --以下代码赋予了@strSQL以真正执行的SQL代码 set @strSQL = 'select top ' + str(@PageSize) +' * from Orders where OrderID' + @strTmp + '(OrderID) from (select top ' + str((@PageIndex-1)*@PageSize) + ' OrderID from Orders' + @strOrder + ') as tblTmp)'+ @strOrder if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) +' * from Orders where OrderID' + @strTmp + '(OrderID) from (select top ' + str((@PageIndex-1)*@PageSize) + ' OrderID from Orders where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder end --print (@strSQL) exec (@strSQL) END
使用:将存储过程中的Orders改为自己所要查询数据的表的名称,OrderID改为自己所用表中的标识字段(具有唯一值就可以)
存储过程测试:
declare @PageCount int declare @RecordCount int exec p_GetPaging '[no] like "%RB%"',10,3,@PageCount,@RecordCount
(2)页面前台:
...... <asp:TextBox ID="txtAllSearch" runat="server"></asp:TextBox> <asp:Button ID="btnAllSearch" runat="server" Text="搜索" onclick="btnAllSearch_Click" /> <asp:GridView ID="GvSAll" runat="server"> </asp:GridView> <asp:LinkButton ID="lbtnPre" runat="server" onclick="lbtnPre_Click" Text="1">1</asp:LinkButton> <asp:LinkButton ID="lbtnNext" runat="server" onclick="lbtnNext_Click" Text="2">2</asp:LinkButton> ......
注:按钮中的文本设为"1"和"2"
(3)页面后台:
private int PageSize = 5; //全局变量 private int PageIndex = 1; //全局变量 //获取数据方法 protected DataTable getPageDataSource(string sqlWhere, int pageIndex, int pageSize) { string connStr = ConfigurationManager.AppSettings["MsSql2nd"].ToString(); SqlConnection conn = new SqlConnection(connStr); conn.Open(); string sql = "p_GetPaging"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@strWhere",SqlDbType.VarChar); cmd.Parameters["@strWhere"].Value = sqlWhere; cmd.Parameters.Add("@PageIndex", SqlDbType.Int); cmd.Parameters["@PageIndex"].Value = pageIndex; cmd.Parameters.Add("@PageSize", SqlDbType.Int); cmd.Parameters["@PageSize"].Value = pageSize; cmd.Parameters.Add("@RecordCount",SqlDbType.Int); cmd.Parameters["@RecordCount"].Direction = ParameterDirection.Output; cmd.Parameters.Add("@PageCount", SqlDbType.Int); cmd.Parameters["@PageCount"].Direction = ParameterDirection.Output; SqlDataReader sdr = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(sdr); sdr.Dispose(); conn.Close(); return dt; } //获取总页数 protected int getPageCount(string sqlWhere, int pageIndex, int pageSize) { string connStr = ConfigurationManager.AppSettings["MsSql2nd"].ToString(); SqlConnection conn = new SqlConnection(connStr); conn.Open(); string sql = "p_GetPaging"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@strWhere",SqlDbType.VarChar); cmd.Parameters["@strWhere"].Value = sqlWhere; cmd.Parameters.Add("@PageIndex", SqlDbType.Int); cmd.Parameters["@PageIndex"].Value = pageIndex; cmd.Parameters.Add("@PageSize", SqlDbType.Int); cmd.Parameters["@PageSize"].Value = pageSize; cmd.Parameters.Add("@RecordCount",SqlDbType.Int); cmd.Parameters["@RecordCount"].Direction = ParameterDirection.Output; cmd.Parameters.Add("@PageCount", SqlDbType.Int); cmd.Parameters["@PageCount"].Direction = ParameterDirection.Output; SqlDataReader sdr = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(sdr); sdr.Dispose(); conn.Close(); //return dt; int pageCount = (int)cmd.Parameters["@PageCount"].Value; return pageCount; } //搜索按钮事件 protected void btnAllSearch_Click(object sender, EventArgs e) { string sestr = this.txtAllSearch.Text.Trim(); string sqlWhere = ""; if (sestr == "") { sqlWhere = ""; } else { sqlWhere = "[no] like \"%" + sestr + "%\""; //注意转义字符的使用 } DataTable dt = getPageDataSource(sqlWhere, PageIndex, PageSize); this.GvSAll.DataSource = dt; ; this.GvSAll.DataBind(); } //前一页事件 protected void lbtnPre_Click(object sender, EventArgs e) { string sestr = this.txtAllSearch.Text.Trim(); string sqlWhere = ""; if (sestr == "") { sqlWhere = ""; } else { sqlWhere = "[no] like \"%" + sestr + "%\""; } PageIndex = Convert.ToInt16(this.lbtnPre.Text); PageIndex -= 1; if (PageIndex<=1) { PageIndex = 1; } DataTable dt = getPageDataSource(sqlWhere, PageIndex, PageSize); this.lbtnPre.Text = PageIndex.ToString(); this.lbtnNext.Text = (PageIndex + 1).ToString(); this.GvSAll.DataSource = dt; ; this.GvSAll.DataBind(); } //后一页事件 protected void lbtnNext_Click(object sender, EventArgs e) { string sestr = this.txtAllSearch.Text.Trim(); string sqlWhere = ""; if (sestr == "") { sqlWhere = ""; } else { sqlWhere = "[no] like \"%" + sestr + "%\""; } PageIndex=Convert.ToInt16(this.lbtnNext.Text); PageIndex += 1; int PageCount = getPageCount("", 1, 5); if (PageIndex>PageCount+1) { PageIndex = PageCount+1; } DataTable dt = getPageDataSource(sqlWhere, PageIndex, PageSize); this.lbtnNext.Text = PageIndex.ToString(); this.lbtnPre.Text = (PageIndex - 1).ToString(); this.GvSAll.DataSource = dt; ; this.GvSAll.DataBind(); }
注:在两个翻页事件中利用了两按钮自身的文本值来保存参数,并相与影响
发表评论
-
ASP.net把datatable与list转成json输出
2014-12-10 12:02 783源代码: //DataTable转成Json ... -
开发问题集锦
2014-09-18 16:45 6751.SWFUpload问题 "触发uploadErr ... -
repeater嵌套使用
2014-09-16 18:38 735前台: <div id="m ... -
ASP.NET环境下使用KindEditor
2013-11-26 16:46 2879最新版的KindEditor,按照在线文档http://www ... -
ASP.NET+jQuery轮播效果
2013-08-21 08:03 2805<style type="text/css&q ... -
ASP.NET与Sql Server数据库的空数据的交互
2013-08-02 22:55 956数据库中的字段:(1) ArticleId int型 外键 可 ... -
设置网页的Title、keywords和description
2013-03-20 15:35 797protected void Page_Load(obje ... -
再谈<<在ASP.NET中重写URL>>
2013-02-20 09:17 863将之前的<<在ASP.NET中重写URL>& ... -
VS2010母版版引入js和css文件
2012-10-31 17:15 833动态引入js文件和css样式表文件 1 引入js文件 Ht ... -
.NET网站中利用jQuery Ajax获取后台数据
2011-12-19 11:59 3236一般处理程序 using System.Web.Script. ... -
解决:Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031)
2011-12-09 10:21 1245解决:Sys.WebForms.PageRequestMana ... -
在ASP.NET中重写URL
2011-12-08 18:02 735目标:将网页地址伪静态 实现:在Global.asax中改写: ... -
ashx文件使用Session(转)
2011-12-02 11:25 827查阅MSDN得到ashx文件要使用Session,必须实现Se ... -
作品展示
2011-11-05 16:27 793刚开发完成 看一下效果 [img][/img] ... -
ASP.NET上传大文件
2011-10-27 17:20 3994上网下一个neatupload 1.2.32的压缩包:(附压缩 ... -
asp .NET弹出窗口汇总(转)
2011-08-16 09:39 595注: //关闭,父窗口弹出对话框,子窗口直接关闭 this ... -
精通ASP.NET中弹出窗口技术(转)
2011-08-16 09:36 887摘要:本文讨论如 ... -
asp.net中的验证控件的使用
2010-04-07 16:35 965前台: <h4>验证控件使用测试< ... -
.net利用AJAX实现局部刷新
2010-04-07 16:30 3315前台: <div> ... -
数据控件+PagedDataSource完成分页
2010-04-07 15:59 1007前台: <asp:Repeater ...
相关推荐
SQL Server 2005 分页查询常用方法
mybatis中,sqlserver分页
sqlserver分页sql
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。
SQL Server 2000下的通用分页存储过程.sql
不错的分页(Hibernate+sqlserver2000分页)值得大家一看。
一个非常好的sql2005分页函数,简单实用,希望对你有所帮助
asp+sqlserver2005万能分页存储过程源码 sqlserver2005源码下载,很灵活的
一个用struts2+sqlserver2000+jstl做的分页小示例,数据库简单,自己创建。
sql server分页技术 详解 sql server分页技术 详解 sql server分页技术 详解
java 连接sqlserver数据库查询,并分页显示
sqlserver+group by分组查询分页存储过程
sql server 分页大全, 分页存储过程,分页TSQL , 分页语法,语句! 最全的SQL Server2000 分页方法。 可放心下载
sqlserver分页查询语句;sqlserver分页查询语句;sqlserver分页查询语句;
关于SQL Server SQL语句查询分页数据的解决方案
sql server2005 分页查询语句
简易的sqlserver分页功能,只需要将页码传入即可,默认id倒序排列,一页十条,也可以通过传入不同参数,对不同字段,进行正序或倒序排列。 使用方法:1、将该类导入实体类包中 2、在需要分页的地方创建该类对象,并...
SQLServer数据库分页,提供SQLServer内部分页
想在存储过程中分页的朋友可以使用, sqlserver存储过程万能分页