仓酷云

标题: ASP网站制作之基于ASP.NET的自界说分页显现 [打印本页]

作者: 活着的死人    时间: 2015-1-16 23:20
标题: ASP网站制作之基于ASP.NET的自界说分页显现
因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。asp.net|分页|显现 择要:本文针对WEB数据库纪录的显现成绩,用实例会商了在ASP.NET框架下利用DataGrid控件对数据库纪录的一种自界说分页显现。

  关头词:WEB数据库;ASP.NET;DataGrid;分页

  弁言

  在用户举行数据查询时一般有如许的情形,一个数据库查询将前往太多的行,分歧不克不及在一页中显现。假如用户正在利用一个慢的链接,发送出格年夜的数据了局大概要花很长的工夫。一旦取得了数据,用户大概发明它不包括准确的内容,大概查询局限太年夜,没有简单的举措反省完一切的了局来找到主要的信息。因而,对查询了局分页显现将为用户可办理的数据查询供应极年夜的便利。分页显现是一种十分罕见的扫瞄和显现大批数据的办法,属于web编程中最常处置的事务之一,如今网站基础上都供应了分页显现信息的功效,但年夜部分仍是基于ASP的,而.NET平台框架是针对林林总总的Web使用计划的,因而本文会商了一种在ASP.NET框架下完成查询纪录自界说分页显现的手艺。

  ASP.NET

  .NET是经由过程平台自力的数据形貌办法(经由过程XML)和通用的会见前言Internet来简化用户会见和存储信息的历程。

  ASP.NET是Microsoft.Net框架的中心元素,是一项基于服务器的壮大手艺,使用它,能够为WWW站点或企业外部网创立静态能够交互的HTML页面。ASP.NET完整基于模块和组件,具有很好的可扩大性和可定制性。它次要包含WebForm和WebService两种编程形式。前者为用户供应功效壮大、表面丰厚的基于表单(Form)的可编程Web页面;后者经由过程对HTTP、XML、SOAP、WSDL等Internet尺度的撑持供应在异构收集情况下猎取远程服务、链接远程设备、交互远程使用的编程界面。

  经由过程ADO.NET链接、利用数据源

  在Microsoft公司推出开放式数据库互连(ODBC)使用程序编程接口(API)以来,呈现了林林总总的数据库会见手艺,而直到ADO.NET呈现,API才干及时地给出处置效果。ADO.NET是ASP.NET使用程序用来与数据库举行通讯的手艺,使你能够同干系数据库和其他数据源举行交互。断开的会见是ADO.NET最主要的特征,是对ADO最年夜的改动。ADO.NET创立一个到数据库的链接,用从数据库中提取的信息正本添补数据集。假如改动了数据集(DataSet)中的信息,数据库里响应表格中的信息不会改动。必要时,能够把DataSet连回最后的数据源并使用一切的改动。

  ADO.NET次要依附以下中心工具的功效。它们分为两个组:一组工具用来寄存和办理数据(比方:DataTable,DataRow和DataRelation),另外一组工具用来链接到某个特定的数据源(比方:Connections,Commands和DataReader类)
在年夜多半的情形下,必要的数据是在某个数据源(比方:某个干系数据库)中。要想对这些数据举行会见、提取并将其拔出到得当的数据工具中,就必需利用数据源工具。利用数据源工具的目标是创立一个链接并把相干信息移进某个DataSet或DataReader中。一种最复杂的数据库会见办法是:使用Command工具间接进进数据源并经由过程DataReader检索只读数据行。另外一种选择:把数据放进某个断开链接的DataSet,从而在更长的工夫段操纵。
  用DataGrid控件分页显现纪录

  在创立链接和命令工具以后就要把前往的纪录显现出来。DataGrid控件是ASP.NET中功效最壮大也是最庞大的数据控件,能够用它来显现和格局化数据表的数据,它除内建的数据体现和办法以外,还同意用户本人界说体现情势。分页手艺为用户可办理的数据查找供应便利。

  1、DataGrid内建分页手艺道理

  DataGrid内建分页手艺很简单完成,但数据量很年夜时,它的便利性是以就义功能为价值的。假如一个用户只需求100个页面中每页显现25笔记录的第8页的了局集,服务器只必要发送第175-200行的数据便可,而不是1-1000行的完整数据。默许的传送体例如所示。


DataGrid默许传送体例

  从中能够看出,DataGrid的内建分页办法效力不高,每次哀求都必需把全部查询了局发送给Web服务器,Web服务器再把数据分红响应的页面。使用DataGrid的内建的分页办法只管是很复杂的,可是,因为Web使用的无序性特性,一个用户每次从一个页面转向别的一个页面时,DataGrid工具都被烧毁偏重新创立,这就意味着数据库服务器每次都必需发送全体的了局集。

  2、自界说分页手艺

  那末怎样经由过程自界说的分页办法来完成疾速处置大批数据的了局集呢?

  它比DataGrid的默许分页办法加倍疾速无效,由于每次哀求不必要把全体的数据了局都发送到Web服务器。相反,它只必要发送每一个页面必要的那些数据集。自界说的分页办法只前往所要检索的那些了局集,如所示。


自界说分页的传送体例

  从中能够看到,数据库每次只必要前往所要显现的数据纪录。

  在ASP.NET页面中实行SQL命令的办法能够是间接实行也能够先将SQL命令封装在存储过程当中,然后再页面中实行该存储历程。实行存储历程比间接实行SQL命令略微庞大一些,但能明显进步数据库驱动的Web站点的功能。每次从ASP.NET页面间接实行SQL命令时,都必要SQLServer对其举行剖析、编译和优化,而存储历程只必要举行一次剖析、编译和优化。

  而这里自界说的分页办法就是利用存储历程来做分页的事情,而不是由Web服务器来做。

  起首,在数据库中创建一个存储历程,该存储历程承受两个输出参数,分离是要前往数据的第一笔记录数和最初一笔记录数。要创立一个前往指定笔记录了局的存储历程,起首必需指定前往了局集的笔记录数,这里用table变量(SQLServer2000),table变量只管是存储在内存中的,但在存储历程停止后主动开释。创立的存储历程以下:

createprocInsertStudents
@Student_Last_Nameasvarchar(100)=null,
@StartRowasint=null,
@StopRowasint=null
AS

  ----创建有标识符列的table变量

declare@t_tabletable
(
[rownum][int]IDENTITY(1,1)PrimarykeyNOTNULL,
[Student_Last_Name][varchar](40),
[Student_First_Name][varchar](20),
)

  ----在前往指定的@StopRow行数以后中断处置查询

SetRowCount@StopRow

  ----拔出到table变量中

insert@t_table
(
[Student_Last_Name],[Student_First_Name]
)
SELECT[Student_Last_Name],[Student_First_Name]
FROMStudents
WHEREStudent_Last_Namelike%+@Student_Last_Namelike%
ORDERBYStudent_Last_Name

  ----前往到准确的了局

SELECT*FROM@t_tableWHERErownum>=@StartRow
ORDERBYrownum
GO

  参数@StartRow和@StopRow吸收整数值,代表要前往的入手下手纪录和停止纪录,假如要在一个25笔记录的页面中前往第8页,我们就能够设置@StartRow为176,@StopRow为200。

  table变量@t_table中界说了一个叫rownum的整数范例的列,并指定为标识符列,它将在拔出数据的时分主动增添,起到排序感化。SetRowCount语句是优化功能的关头,它会告知SQLServer举行限定要拔出的数据,假如我们要176-200笔记录之间的数据,那末就能够不用拔出年夜于200笔记录的数据。最初的SQL语句经由过程@t_table的table变量选择rownum年夜于大概即是@StartRow的那些数据集,然后把它们前往到Web服务器,由Web服务器绑定到DataGrid工具。但假如扫瞄者哀求的页数愈来愈年夜,必要向table变量添补的纪录就越多,招致页面功能有所下落。因而,功能将依附于你盘算机的硬件和你要前往的纪录数,但为了加重数据库和收集传输的压力,计划公道的查询了局页数是很奏效的。

  然后将为DataGrid工具编写代码来利用分页技能。DataGrid的AllowPaging、AllowCustomPaging、PageStyle属性有助于纪录用户的会见形态。起首设定AllowCustomPaging为True。我们利用SQLDataReader来装载DataGrid工具。据功能测试标明:在构建列表显现数据时,利用SQLDataReader比利用DataSet要快两倍以上。

  为了寻求功能最好化,设定DataGrid的EnableViewState属性为false,由于如许在每次与Web服务器打交道时就不用再在viewstate中存储内容了。

  当DataGrid不在viewstate中举行保留,必要增加导航按钮来匡助用户举行导航。

  那末在页面上增添两个按钮:“上一页”和“下一页”。要进进下一页,就在“下一页”按钮上增添click事务,经由过程自界说分页存储历程哀求响应的纪录。比方:假如第一页由第1条到第25笔记录构成,那末要导航到第二页,我们就向存储历程的@StartRow传送参数26,向@StopRow传送参数50便可,要前往到第一页,@StartRow和@StopRow分离为1和25。

  在这里利用VB.NET编写“下一页”事务:

PrivateSubButtonNext_Click(ByValsenderAsObject,_
ByVale</p>ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。
作者: 飘灵儿    时间: 2015-1-20 09:32
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
作者: 再现理想    时间: 2015-1-24 14:08
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
作者: 蒙在股里    时间: 2015-2-1 16:39
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
作者: 透明    时间: 2015-2-7 08:58
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
作者: 小魔女    时间: 2015-2-21 08:46
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
作者: 柔情似水    时间: 2015-3-6 20:02
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
作者: 谁可相欹    时间: 2015-3-13 07:09
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
作者: 乐观    时间: 2015-3-20 16:16
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2