ASP.NET分页正品—分页真
承接上篇博文《ASP.NET真假分页-假分页》:http://blog.csdn.net/u010773667/article/details/38845009,继续解说ASP.NET真假分页之真分页。
真分页
当数据量过大,有几万甚至十几万条数据时。每次都从数据库中取出全部数据就会减少查询效率,系统执行慢。还有可能卡死,这时假分页就会显得非常不人性化。因此有了真分页的必要性。
正如上篇博文总结归纳,“真”相对于“假”存在,即不藕断丝连。从根部彻底断开,在此处表现为依据查询条件,仅仅从数据库中提取出须要的部分,适合于大数据。而真分页的实现要借助于第三方控件AspNetPager。
AspNetPager控件是一个基于.net的第三方免费开源控件,具有开发高效、使用方便、功能完整等长处。它弥补了GridView内置分页以及PageDatasource类辅助分页的不足,将分页数据逻辑和页面UI分离开来,很有利于SQL分页的实现。
首先须要下载AspNetPager控件,下载DLL文件:http://www.webdiyer.com/downloads
在VS中引用AspNetPager控件,欢迎參考博文《VS加入Ajax》中加入选择项部分(有图有真相)。此处不再赘述:http://blog.csdn.net/u010773667/article/details/38518461
首先在web窗口中拖放一个gridview控件用来显示数据。选中AspNetPager控件拖拽到web窗口对应位置用来进行分页设置。
选中spNetPager控件。在右下角将会显现一个小button,单击打开,对导航button显示文本进行设置。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc3MzY2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
执行后效果:
对页索引文本或下拉框进行设置
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc3MzY2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
改进效果见下图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDc3MzY2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
假设还想显示的更加详细,可进行自己定义信息区显示方式及内容设置
上述对控件进行的全部设置将在VS中自己主动生成对应代码,我们也能够通过手动输入代码进行设置,此处不介绍。
好了。设置好了前台。接下来就要进行数据绑定了(注意:在方法anpCa_PageChanged()中绑定了caid=6,此处须要又一次获得类别ID,我没有解决。。
。
希望会的朋友友情提示一下)
protected void Page_Load(object sender, EventArgs e)
{
if (!Page .IsPostBack )
{
string caid = Request.QueryString["caid"];
DataTable dt = new NewsManager().SelectAllNewsByCaId(caid);
anpCa.AlwaysShow = true;
anpCa.PageSize = 5;
anpCa.RecordCount = dt.Rows.Count;
int startIndex = anpCa.PageSize * 0;
int endIndex = anpCa.PageSize * 1;
gvDataBind(caid, startIndex, endIndex);
}
}
private void gvDataBind(string caid,int startIndex,int endIndex)
{
DataTable dt = new NewsManager().SelectPartNewsByCaId(caid, startIndex, endIndex);
if (dt.Rows.Count != 0)
{
lblCategory.Text = dt.Rows[0]["name"].ToString(); //使类别标题显示对应的类别名称
}
gvNew.DataSource = dt;
gvNew.DataBind();
}
protected void anpCa_PageChanged(object sender, EventArgs e)
{
string caid = "6";
int startIndex = anpCa.PageSize * (anpCa.CurrentPageIndex - 1)+1;
int endIndex = anpCa.PageSize * (anpCa.CurrentPageIndex);
gvDataBind(caid, startIndex, endIndex);
}
}
在D层数据查询的部分代码展示
</pre></p><p></p><pre class="html" name="code">
</pre><span style="font-family:华文楷体;font-size: 14pt;"></span><pre class="html" name="code">#region 依据类别ID取出该类别下的全部新闻的分页显示
/// <summary>
/// 依据类别ID取出该类别下的全部新闻
/// </summary>
/// <param name="caId">类别ID</param>
/// <returns></returns>
public DataTable SelectPartNewsByCaId(string caId,int startIndex, int endIndex)
{ DataTable dt = new DataTable();
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter ("@caId",caId ),
new SqlParameter ("@startIndex",startIndex ),
new SqlParameter ("@endIndex",endIndex )
};
dt = sqlhelper.ExecuteQuery("dbo.category_showpage", paras, CommandType.StoredProcedure);
return dt;
}
#endregion
存储过程(非常重要)
-- =============================================
-- Author: 王英群
-- Create date: 2014-8-10
-- Description: 跟据类别ID取出该类别下的全部新闻的分页显示
-- =============================================
ALTER PROCEDURE [dbo].[category_showpage]
@caid int,
@startIndex int,
@endIndex int
AS
BEGIN
with temptable as (
select ROW_NUMBER() over (order by id desc) as 行号, * from
(
select n.id,n.titile,n.createTime,c.[name],n.caId from news n
inner join category c on n.caId =c.id and n.caId =@caid
) as aa
) select * from temptable where 行号 between @startIndex and @endIndex END
执行后效果见下图:
注意:我的程序中多了一个參数(类别ID),在页索引动态变化的过程中须要一直又一次获得,这一点我没有实现,希望小伙伴们能够帮助我。谢谢!
结合上篇博文。假分页适合于数据量相对较小的情况下。而真分页适合于数据量大的情况下。真假分页的使使用,请阅读我们的负担。
ASP.NET分页正品—分页真的更多相关文章
- ASP利用Recordset实现分页
<!--#INCLUDE FILE="../function/db.asp" --> <!--#INCLUDE FILE="../function/co ...
- ASP.NET MVC 数据分页
作为一个菜鸟级的程序猿,总结一下学到的两种数据分页. 1.真分页 真分页就是需要时从数据库里读出需要多的数据,利用存储过程可实现.网上的分页SQL特别多,数据库自带的一些方法也可方便的帮助分页,但是我 ...
- 学习ASP.NET MVC(十一)——分页
在这一篇文章中,我们将学习如何在MVC页面中实现分页的方法.分页功能是一个非常实用,常用的功能,当数据量过多的时候,必然要使用分页.在今天这篇文章中,我们学习如果在MVC页面中使用PagedList. ...
- asp.net利用存储过程分页代码
-最通用的分页存储过程 -- 获取指定页的数据 CREATE PROCEDURE Pagination ), -- 表名 ) = '*', -- 需要返回的列 )='', -- 排序的字段名 , -- ...
- ASP.NET MVC 简单分页代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- ASP.NET中刷新分页
1,第一次全部把数据加载到内存中,然后再做分页,性能差,不推荐. 2,GridView自带分页 3,AspNetPager分页控件 这个是第三分控件需要下载,很好用 4,自己写分页 前三种就不介绍如 ...
- Asp 解析 XML并分页显示
Asp 解析 XML并分页显示 Asp 解析 XML并分页显示,演示样例源代码例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...
- asp.net MVC通用分页组件 使用方便 通用性强
asp.net MVC通用分页组件 使用方便 通用性强 该分页控件的显示逻辑: 1 当前页面反色突出显示,链接不可点击 2 第一页时首页链接不可点击 3 最后一页时尾页链接不可点击 4 当前页面左 ...
- Asp.net MVC 简单分页 自做简单分页
Asp.net MVC 简单分页: public static string Pager(int page,int pageSize,int total) { ...
随机推荐
- I2C分析三
1 引言 IIC (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备.它是同步通信的一种特殊形式,具有接口线少.控制方 ...
- Effective Objective-C 2.0 笔记三(Literal Syntax简写语法)
当使用Objective-C的时候,你总会遇到Foundation 框架中的一些类,这些类包含NSString,NSNumber,NSArray和NSDictionary,这些数据结构都是自 ...
- SQL SERVER中的流程控制语句
流程控制语句 是指用来控制程序运行和流程分至点额命令.一般指的是逻辑计算部分的控制. 1.Begin End语句 封装了多个T-SQL语句组合,将他们组成一个单元来处理. 一般在条件查询或者循环等控制 ...
- OpenStack安装与配置2
第二部分 OpenStack安装与配置 一.引言 本章内容讲解如何在3台物理机上搭建最小化云平台,这3台机器分为称为Server1.Server2和Client1,之后的各章也是如此.Server ...
- (转)SWT的CheckBoxTreeViewer的相关用法
最近在项目中需要用到遍历某个目录下所有文件,并按照树形结构展示,同时还需要提供对树形菜单的选择展开等操作.在eclipse中提供了CheckboxTreeViewer组件来满足所需要的功能 下面是需要 ...
- Mysql经常使用命令
1.导出整个数据库 mysqldump -u username -p --default-character-set=latin1 数据库名 > 导出的文件名称(数据库默认编码是latin1) ...
- Java-UrlRewrite中文api文档
安装 1. 下载jar包, 并加入到WEB-INF/lib下 2. 在WEB-INF/web.xml中增加下面的配置 <filter> <filter-name>UrlRewr ...
- 让CentOS系统时间同步
CentOS系统时间同步的步骤如下: 新装的CentOS系统服务器可能设置了错误的,需要调整时区并调整时间. 如下是CentOS系统使用NTP来从一个时间服务器同步cp /usr/share/zone ...
- Linux渗透+SSH内网转发
http://www.jb51.net/hack/58514.html http://blog.chinaunix.net/uid-756931-id-353243.html http://blog. ...
- 一类斜率优化的dp(特有性质:只能连续,不能交叉)
hdu3480 给定一个有n个数的集合,将这个集合分成m个子集,要求子集的并等于全集求花费最小. 花费为该子集的(最大数-最小数)的平方. 我们将n个数排序, a < b < c < ...