行动下移篇之——aspnetpager分页控件

2023-11-05 03:30

本文主要是介绍行动下移篇之——aspnetpager分页控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


概述

        在对网页上的记录进行分页显示时,一般用到两种方式,分别是假分页和真分页。假分页就是从数据库中取出所有记录然后再进行分页;而真分页相对来说就简单多了,真分页只需要从数据库中取出当前页需要显示的记录即可。如果你的记录数据量比较小,用哪种方法都可以,如果记录数据量特别大,这时就需要用我们的真分页来提高我们的效率。

       在这里我们用aspnetpager分页控件来实现我们的真分页。aspnetpager分页控件下载的地址是:http://www.webdiyer.com/Controls/AspNetPager/Downloads

 

实现过程

         在正式真分页实现之前,我们还需要说明一点,我们的aspnetpager将分页功能完成后还需要一个绑定数据的控件与之配合,我这里采用的是GridView控件,关于GridView控件本身也可以实现分页功能,但它属于假分页,实现起来也比较简单只需要设置两个属性(AollowPagingPageSize)即可完成,我们就不赘余了,现在进入我们的实现过程。

 

 1.添加AspNetPager控件

     在我们vs的工具箱——右击——选择项——浏览——选择,选择完后系统会自动添加控件,到此我们该控件就添加进工具箱了,接下来就像一般控件一样拉到我们添加的页面就可。



 


 


 


 

2.实现代码

    我是采用三层架构并且利用我们的存储过程实现的我们分页显示的功能,具体步骤包括:

         a.建立存储过程查询语句

         b.数据层进行数据查询

         c.前台代码调用

 

 

a.建立存储过程查询语句

    首先我们要先从数据库查询所要显示的记录,我是采用存储过程实现的这个功能,下面这就是我们存储过程的代码:

set ANSI_NULLS ON
setQUOTED_IDENTIFIER ON
go--=============================================
--Author:        张文康
-- Create date:2013-8-7
--Description:        按页查询新闻
--=============================================
ALTER PROCEDURE[dbo].[news_selectByPage]
@startIndex  int,
@endIndex int
AS
BEGIN
with temptbl as (
SELECT ROW_NUMBER()OVER (ORDER BY id desc)AS Row, * from news )
SELECT * FROMtemptbl where Row between @startIndex and @endIndex
END


 

b.数据层进行数据查询

 

DAL层:

      

 #region (有参数查询)按页查询,根据每页显示记录数/// <summary>/// 按页查询,根据每页显示记录数/// </summary>/// <paramname="startIndex">该页开始记录数</param>/// <paramname="endIndex">该页结束记录数</param>/// <returns></returns>public DataTable SelectByPage(intstartIndex, int endIndex){DataTable dt = new DataTable();string cmdText ="news_selectByPage";SqlParameter[] paras = newSqlParameter[]{new SqlParameter("@startIndex",startIndex ),new SqlParameter("@endIndex",endIndex )};dt =sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);return dt;}SQLHlper#region 该方法执行传入的带参数的SQL查询语句或存储过程/// <summary>/// 该方法执行传入的带参数的SQL查询语句或存储过程/// </summary>/// <paramname="cmdText">带参数的SQL查询语句或存储过程</param>/// <paramname="paras">参数集合</param>/// <paramname="ct">命令类型</param>///<returns>查询数据表</returns>public DataTable ExecuteQuery(stringcmdText, SqlParameter[] paras, CommandType ct){dt = new DataTable();cmd = new SqlCommand(cmdText,GetConn());cmd.CommandType = ct;cmd.Parameters.AddRange(paras);//比try catch 更好关闭数据源的处理using (sdr =cmd.ExecuteReader(CommandBehavior.CloseConnection)){dt.Load(sdr);}//sdr.Close();//conn.Close(}return dt;}#endregion

 

c.前台代码调用

 

using System;
usingSystem.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
usingSystem.Web.UI.WebControls;
using BLL;
using System.Data;namespace Web
{public partial class test :System.Web.UI.Page{protected void Page_Load(object sender,EventArgs e){if (!Page.IsPostBack){//查询总新闻条数DataTable dt = newNewsManage().SelectAll();int titleCount = dt.Rows.Count;anp.RecordCount = titleCount;//进行显示BindNews();}else{BindNews();}}//分页控件显示该页记录数protected voidAspNetPager1_PageChanged(object sender, EventArgs e){//通过换页显示记录BindNews();Response.Write("开始记录数:"+anp.StartRecordIndex+"<br>结束记录数"+anp.EndRecordIndex);}//通过分页显示记录private void BindNews(){//定义该页开始记录数int start = anp.StartRecordIndex;//定义该页结束记录数int end = anp.EndRecordIndex;//绑定新闻列表DataTable dt = newNewsManage().SelectByPage(start, end);GridView1.DataSource = dt;GridView1.DataBind();}}
}


 

 

 

效果

    仅仅是向大家展示我们具体的一个实现过程,所以页面样式这块我们没有进行设置,关于数据库的信息也是我临时输入的,仅仅是为了做实验用,关于AspNetPager控件的样式也有很多,大家可以自己设置。下面就是我们实现的效果图。




 

 

总结

    到这里呢,利用我们的AspNetPager控件就实现了我们的真分页的功能,它可以大大提高我们的网站或系统的处理效率。关于AspNetPager控件是我们牛腩视频里讲到的,不过它里面并没有具体实现,只是提了下这个控件的好处。我们在平常学习中就是要发扬这种行动下移的风格,它提到了,我们就要实现,要跟自己较真。



这篇关于行动下移篇之——aspnetpager分页控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/347106

相关文章

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

fastreport打印trichedit分页问题的解决

用fastreport来打印richedit里面的内容。刚开始放一个frxrichview组件到报表上,然后在 var str: TMemoryStream; begin    begin      str:= TMemoryStream.Create;      CurrRichRecord.richedit.Lines.SaveToStream(str);      str.Posit

简单Hbase 分页方案

简单Hbase分页方案 网上大多数分页方案分为从服务端分页或者从客户端分页 服务端分页方式主要利用PageFilter过滤器,首先太复杂,其次针对集群的兼容性不是很好,作者利用服务端分页+客户端分页结合方式给出一种简单易行的中间方案。 1.利用PageFilter过滤器从服务端分页,过滤出所需要的最大条数, 注:作者认为大多数用户不会进行太深的翻页,假设pageSize=5,客户饭100页一共

SpringBoot项目-实现简单的CRUD功能和分页查询

背景 本博文主要是创建了一个新的SpringBoot项目,实现基本的增删改查,分页查询,带条件的分页查询功能。是方便初学者学习后端项目的一个比较清晰明了的实践代码,读者可根据博文,从自己动手创建一个新的SpringBoot项目,到使用PostMan测试基本请求,完完全全实践一遍,写出自己的代码,或者实现自己想要的功能。因为在这个过程中会遇到许多的问题,从JDK的版本选择到跑通SpringBo

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的

Jasperreports+jaspersoft studio学习教程(八)- 报表分页和大量数据内存处理

9.1 设计报表模板 9.1.1 使用Table组件新建模板(步骤参考教程七)如下: 9.1.2 模板自带变量 $V{PAGE_NUMBER} :代表当前页数(可以是页码也可以是页数,通过TextField的计算时间的不同值来设置) $V{PAGE_COUNT} :当前页面中记录的数目 $V{groupname_COUNT} :   代表当前组的记录数 $V{COLUMN_NU