webform中实现SQL Sever2008数据库数据分页查询
1
分页
1.1
数据库中存储过程
已知 当前页 pageIndex 页容量 pageSize
求 总页数 pageCount 和 当前页的数据
//例子:
create proc usp_Example
@pageIndex int,---------参数之间用 , 分割 最后一个参数后 必须没有 ,
@pageSize int,
@pageCount int output
as
begin
declare @count int
select @count=count(*) from <tableName>
set @pageCount=ceiling(@count*1.0/@pageSize)
select * from
(select *,row_number() over(order by <columnName> asc/desc) as 编号 from <tableName>) tempTable
where 编号 between (@pageIndex -1)*@pageSize+1 and @pageIndex*@pageSize
and
--测试
declare @count int
exec usp_Example 1,2,@count output
print @count
1.2 SQLHelper中
private static DataTable ExecuteDataTable(string sql,CommandType ct,params SqlParameter[] param)
{
using(SqlConnection conn = new SqlConnection(connStr))
{
using(SqlCommand cmd= new SqlCommand(sql,conn))
{
cmd.Parameters.AddRange(param);
cmd.CommandType=ct;
conn.Open();
try{
using(SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}catch(Exception ex)
{
throw ex;
}
}
}
}
1.3 DAL 中
public List<Model> GetModelsByProc(int pageIndex,int pageSize,out int pageCount)
{
SqlParameter[] param={
new SqlParameter("@pageIndex",SqlDbType.Int){Value=pageIndex},
new SqlParameter("@pageSize",SqlDbType.Int){Value=PageSize},
new SqlParametre("@pageCount",SqlDbType.Int){Direction=ParameterDirection.OutPut}
};
DataTable dt =SqlHelper.ExecuteDataTable("ProcName",CommandType.StoredProcdure,param);
pageCount=param[2].Value;
List<Model> list=new List<Model>();
foreach(DataRow row in dt.Rows)
{
list.Add(row);
}
return list;
}
1.4 BLL
public List<Model> GetModelsByProc(int pageIndex,int pageSize,out int pageCount)
{
return new DAL().GetModelsByProc(pageIndex,pageSize,out pageCount);
}
1.5 UI
.CS界面
protected string table;
private int pageIndex=1;//默认第一页
private int pageSize=3;//默认每页显示3条数据 可从前台 获取进行设定
private int pageCount;//总页数
protected string pageBar;
//生成表格
private string CreateDataTable()
{
List<Model> list=new BLL().GetModelsByProc(pageIndex,pageSize,out pageCount);
StringBuilder sb=new StringBuilder();
sb.Append("<table>");
sb.Append("<tr><th>Column1</th><th>Column2</th><th>Column3</th></tr>");
for(int i=0;i<list.Count;i++)
{
Model model=List[i];
sb.Append("<tr>");
sb.Append("<td><a href='ModelDetails.aspx?id="+model.ID+"'>modelContent1</a></td>");
sb.Append("<td><a href='MySelf.aspx?id="+model.ID+"'@action=delete>modelContent2<a></td>");
sb.Append("<td><a href='WaterMaker.ashx?id="+model.ID+"'>modelContent2</a></td>");
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
//创建分页栏
private string CreatePageBar()
{
StringBuilder sb =new StringBuilder();
sb.Append("<a href='MySelf.aspx?page=1'>首页</a>");
int num=pageIndex;
num=num>1?num-1:1;
sb.Append(" <a href='MySelf.aspx?page="+num+"'>上一页</a>");
num=num<pageCount?num+1:pageCount;
sb.Append(" <a href='MySelf.aspx?page="+num+"'>下一页</a>");
sb.Append(" <a href='MySelf.aspx?page="+pageCount+"></a>");
sb.Append(" "+pageIndex+"/"+pageCount+"");
return sb.ToString();
}
//页面加载
protected void Page_Load(object sender,EventArgs e)
{
//每次加载都执行
string page=Request.QueryString["page"];
if(int.tryParse(page,out pageIndex))
{
pageIndex=1;
}
table=CreateDataTable();
pageBar=CreatePageBar();
}
1.6 .aspx 前台页面
<%=table%>
<%-pageBar%>
webform中实现SQL Sever2008数据库数据分页查询的更多相关文章
- [.NET] SQL数据分页查询
[.NET] SQL数据分页查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. ...
- Eclipse中连接Sql Sever2008 -----转自Yogurshine
Eclipse中连接Sql Sever2008 -----转自Yogurshine 一 SQl Sever服务器配置 1我之前已经安装好SQL Sever 2008R2.(注意:安装一遍未成功时,一定 ...
- 访问内网中的sql server数据库的简便方法
前言: 有时候我们要访问局域网内的 sql server服务器,比如测试环境数据库在公司内网,回到家或在客户现场要连接内网中的数据库 第一步:假如可以连接局域网的数据库 192.168.150.129 ...
- QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据
QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 參考链接: http:// ...
- MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法
在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法. 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应 ...
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句 (转)
http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...
- 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)
分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句(转)
http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...
- Oracle、MySql、SQLServer 数据分页查询
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...
随机推荐
- spring ConfigurableListableBeanFactory 接口
接口继承关系如上图. ConfigurableListableBeanFactory具体: 1.2个忽略自动装配的的方法. 2.1个注册一个可分解依赖的方法. 3.1个判断指定的Bean是否有资格作为 ...
- POJ2104Kth Number
整体二分模板题, 有些细节需要注意 #include<cstdio> #include<cctype> #include<climits> #include< ...
- java多线程03-----------------volatile内存语义
java多线程02-----------------volatile内存语义 volatile关键字是java虚拟机提供的最轻量级额的同步机制.由于volatile关键字与java内存模型相关,因此, ...
- IntelliJ IDEA常用统一设置2-Inspections检查设置(Linux/Mac/Windows)
Inspections检查设置功能,能检查一些普通问题,比如代码风格等等.当然,这个虽然没有CheckStyle这些插件专业,但也是另一种选择. 官方参考:https://www.jetbrains. ...
- MongoDb 出现配置服务不同步的处理
主要片方法就是用正常的配置文件的数据覆盖有问题的就行. 引用: http://dba.stackexchange.com/questions/48232/mongodb-config-servers- ...
- xamarin android 获取根证书代码
Java.Security.KeyStore keyStore = Java.Security.KeyStore.GetInstance("AndroidCAStore"); ke ...
- Boost.Asio c++ 网络编程翻译(18)
同步服务端 同步服务端也相当简单.它须要两个线程,一个负责接收新的client.另外一个负责处理已经存在的client. 它不能使用单线程:等带一个新的client是一个堵塞操作,所以我们须要另外一个 ...
- iOS绘图—— UIBezierPath 和 Core Graphics
前言 iOS系统本身提供了两套绘图的框架,即UIBezierPath 和 Core Graphics.而前者所属UIKit,其实是对Core Graphics框架关于path的进一步封装,所以使用起来 ...
- python 工具 二进制文件处理之——大小端变换
大端换小端 16位: import struct import sys # main body if sys.argv.__len__() > 1: # 参数获取 src_file = sys. ...
- Head First Python 学习笔记-Chapter3:文件读取和异常处理
第三章中主要介绍了简单的文件读取和简单的异常处理操作. 首先建立文件文件夹:HeadFirstPython\chapter3,在Head First Pythong官方站点下载须要使用的文件:sket ...