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的分页查询是最简单的,借 ...
随机推荐
- PE 512 Sums of totients of powers
可以很简单的发现,当n是奇数的时候,f(n)=φ(n),否则f(n)=0. 所以我们就是求n<=5*10^8且n为奇数的φ的和. 首先我们可以做到用杜教筛算出φ的前缀和,但是如何把偶数的减去? ...
- Failed to check the status of the service报错解决
报这个错误是因为我的application_context.service.xml 文件里的的dubbo声明暴露口时的ref属性写错了. <dubbo:service interface=&qu ...
- SVG动画实践篇-无中生有的线条动画
git: https://github.com/rainnaZR/svg-animations/tree/master/src/pages/step2/path 说明 这个动画实现的是线条动画,主要用 ...
- JavaWeb过滤器.监听器.拦截器-?原理&区别
过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西:拦截器可以简单理解为“拒你所想拒”,关心你想要拒绝掉哪些东西,比如一个BBS论坛上拦截掉敏感词汇. 1.拦截器是基于java的反射机制,过 ...
- python 工具 图片批量合并
注:代码两处设置 region = (4,3,x-3,y-5) 目的是crop剪去图片的白边,这个可以视情况改变 图片需要命名为 x_1.png .....这样的格式 #encoding=ut ...
- Python操作MySQL:pymysql和SQLAlchemy
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Cocos2d-x移植安卓的笔记
一.下载所需软件 Java SDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Windows x64 ...
- (9)launcher3 之 外部 更换主题Theme APP demo 实现原理以及demo
先说下我的思路: luancher3里面更换图标的逻辑例如以下: 先从APP资源包里查询--数据库查询--其它地方查询ICON 因此,我们仅仅须要把 从数据库获取ICON 代码提前到 从APP资源包 ...
- 【php】在Windows2003下配置Apache2.4与php5.4
直接配置php一直使用如同<[php]本地开发环境的部署与helloworld>(点击打开链接)的一键傻瓜包,被批为极度不专业,关键是这些一键傻瓜包LAMP的版本号不好控制.port什么的 ...
- Ubuntu16.04下屏幕侧边栏的设置
ubnutu的任务栏都是在左侧: zhang@zhang-virtual-machine:~$ gsettings set com.canonical.Unity.Launcher launcher- ...