- 浏览: 601773 次
- 性别:
- 来自: 卡哇伊
文章分类
- 全部博客 (299)
- C# (25)
- Java (1)
- WinForm (0)
- Asp.Net (86)
- Jsp (2)
- Php (1)
- Web Service (0)
- Desgin Patterns (19)
- Data Structure & Algorithms (1)
- SQLserver (41)
- Mysql (0)
- Oracle (2)
- Javascript (50)
- Ajax (10)
- Jquery (1)
- Flex (0)
- Regular Expression (5)
- DIV+CSS+XHTML+XML (18)
- Software Test (0)
- Linux (0)
- Utility (17)
- Net Digest (4)
- windows 2003 (10)
- Other (4)
- English (1)
- IT Term (1)
最新评论
-
w497480098h:
学习了 很好谢谢
SQL Server下无限多级别分类查询解决办法(简单查询树形结构数据库表) -
main_fun:
确实不错
iframe自适应高度 -
jveqi:
...
DBA -
mxcie:
其它版本没有确认,今天使用vs2003时,其.sln文件也需要 ...
彻底删除项目的VSS源代码管理信息 -
moneyprosper:
就只有IE支持,火狐和谷歌都不支持此种方法。正在寻找中。。。
从父页面读取和操作iframe中内容方法
利用ASP.NET开发Web数据库的查询功能模块时,为了减少网络流量,提高页面的访问速度,一般不会将所有的查询结果完全在一页中显示出来,而是将其按照一定规则分成多页进行显示,每页显示一定数目记录。应用数据记录分页技术,可以提高数据的查询性能及页面的显示速度,减轻数据库服务器的负担。
1 分页显示方法概述
对Web数据库查询结果进行分页显示主要有两种实现方式,分别是浏览器端分页和服务器端分页。浏览器端分页是先将数据库中所有满足查询条件的记录一次性保存下来,然后通过设置每页要显示的记录数,再确定要显示记录的起点和终点来实现分页显示。服务器端分页是根据用户的请求,每次分别从满足查询条件的记录中将规定数目的记录数作读取并显示出来。
为此,我们采用服务器端分页的方式。在浏览器端进行分页时,为了减少网络的流量,我们采用SQL Server的存储过程进行分页。
2 主要技术
2.1 ADO.NET类
在Web应用系统中,ASP.NET使用ADO.NET将系统前端的Web浏览器和后台的数据库之间联系起来。ADO.NET是.NET Framework提供的一系列类,提供了对关系数据、XML和应用程序数据的访问。
3 分页显示技术的实现
在此,我们使用System.data.SqlClient(包含访问SQL Server数据库的类)对MS SQL Server2000进行操作,使用ASP.NET中的C#语言进行描述。以笔者开发的“在线考试系统”中的“查看学生留言信息模块”为例来说明该项技术的开发过程。
3.1连接数据库
要访问数据,必须首先连接数据库,在此我们利用System.data.SqlClient.SqlConnection类来连接SQL Server中Student的数据库。用到主要属性和方法如下:
属性/方法 |
说明 |
ConnectionString |
获取或设置用于打开SQL Server数据库的字符串 |
Open |
使用ConnectionString所指定的属性设置打开数据库连接 |
Close |
关闭与数据库的连接 |
连接字符串如下:
SqlConnection SCN = new SqlConnection("server=;database=BSNetExam;uid=sa;pwd=");
3.2 存储过程的建立
CREATE PROCEDURE PageCut @PageSize int=10 , -- 页面大小 @PageIndex int=1 --当前页数 AS declare @strSQL varchar(500) if @PageIndex=1 set @strSQL='select top'+str(@PageSize)+'* from tdbLevMess order by rqsj' else set @strSQL='select top'+str(@PageSize)+' * from tdbLevMess where rqsj not in (select top '+str((@PageIndex-1)*@PageSize)+' rqsj from tdbpres) order by rqsj' exec(@strSQL) GO
3.3操作数据库
查询数据操作可以通过多种方式来实现,常用的对象包括SqlCommand对象(表示一个SQL查询或者一个存储过程)和SqlDataAdpater对象(把一个SqlCommand提交给SQL Server数据库)。在此,我们使用SqlCommand对象来操作数据库。
SqlCommand类位于System.Data.SqlClient空间中,表示要对SQL Server数据库执行的一个Transact-SQL语句或存储过程。本例中用到的属性和方法如下:
属性/方法
说明
CommandText
获取或设置要对数据源执行的 Transact-SQL 语句或存储过程。
CommandType
获取或设置一个值,该值指示如何解释 CommandText 属性。
Connection
获取或设置 SqlCommand 的此实例使用的 SqlConnection。
Parameters
获取 SqlParameterCollection。
ExecuteReader
将 CommandText 发送到 Connection 并生成一个 SqlDataReader。
SqlParameter类位于System.Data.SqlClient空间中,表示 SqlCommand 的参数,也可以是它到 DataSet 列的映射。本例中用到的Value属性(获取或设置该参数的值)。
其实现程序如下:
SqlCommand SCM=new SqlCommand(); //定义SqlCommand类 SqlDataReader SDR; //定义SqlDataReader类 private void GridView_Init(int PageSize,int PageIndex) { SCN.Open(); //打开数据库连接 SCM.Connection = SCN; SCM.CommandText = "pagecut"; //执行存储过程 SCM.CommandType = CommandType.StoredProcedure; SqlParameter[] pares ={ new SqlParameter("@PageSize",SqlDbType.Int), new SqlParameter("@PageIndex",SqlDbType.Int)}; pares[0].Value = PageSize; pares[1].Value = PageIndex; SCM.Parameters.Clear(); //清空参数 foreach (SqlParameter parameter in pares) { SCM.Parameters.Add(parameter); } SDR = SCM.ExecuteReader(); //执行存储过程 GridView1.DataSource = SDR; //定义GridView的数据源 GridView1.DataBind(); // GridView数据源绑定 SCN.Close(); //关闭连接 }
3.4 程序的实现
在Web窗体上,添加一个GridView控件(用于数据的显示),四个LinkButton(用作超级链接,分别为首页、上一页、下一页、末页),一个Label控件。将GridView控件的AllowPaging(是否在GridView中打开分页功能)属性设置为False。我们利用Session对象保存分页程序中的参数。具体程序如下:
protected void Page_Load(object sender, EventArgs e) {//页面初始化 if (!IsPostBack) //如果页面不是第一次加载 { int PageCount,PageIndex,PageSize; //定义页面总数、当前页面号、每页记录数 SCN.Open(); SCM.CommandText = "select count(*) from tdbLevMess "; SCM.Connection = SCN; int ReCount = Convert.ToInt32(SCM.ExecuteScalar().ToString());//数据集记录总数 SCN.Close(); Session.Add("PageSize", 20); //为共享变量每页记录数PageSize赋值 PageSize = Convert.ToInt16(Session["PageSize"]);//每页记录数为20 PageCount=ReCount % PageSize == 0? ReCount / PageSize: ReCount / PageSize + 1;//计算页面的总页数 Session.Add("PageCount", PageCount); //为共享变量总页数PageCount赋值 PageIndex = 1; Session.Add("PageIndex", PageIndex); //为共享变量总页数PageIndex赋值 GridView_Init (PageSize, PageIndex); //调用过程为GridView填充数据 LinkButton1.Enabled = false, LinkButton2.Enabled = false; LinkButton3.Enabled = true,LinkButton4.Enabled = true; Label1.Text = "第"+PageIndex.ToString() + "页/共" + PageCount.ToString() + "页"; } } protected void LinkButton2_Click(object sender, EventArgs e) {//上一页按钮 int PageIndex = Convert.ToInt16( Session["PageIndex"] )- 1; int PageCount = Convert.ToInt16( Session["PageCount"]); Session.Add("PageIndex", PageIndex); int PageSize = Convert.ToInt16(Session["PageSize"]); if (PageIndex <= 1) { LinkButton1.Enabled = false; LinkButton2.Enabled = false; } LinkButton3.Enabled = true; LinkButton4.Enabled = true; GridView_Init(PageSize, PageIndex); Label1.Text = "第" + PageIndex.ToString() + "页/共" + PageCount.ToString() + "页"; }
我们只给出了LinkButton2的代码(实现向上翻页),其它超级链接代码跟此相类似。
4 结束语
查询分页技术是Web应用系统开发中经常遇到的重要工作,选择一种高效的查询分页技术,不仅能大大提高响应速度,而且能提高整个系统性能,节约服务器宝贵资源。
发表评论
-
JS操作RadioButtonList
2009-12-16 23:25 3849function IsUpPic() { ... -
asp.net跳转页面的三种方法比较
2009-10-22 14:16 25001.Response.redir ... -
ASP.NET网站中的安全问题
2009-10-20 16:57 1160在网络经常看到网站被 ... -
新闻内容页分页的简单做法
2009-10-10 10:08 1194该例子只是提供了基本思路 很简单的做法,这个是假设数 ... -
Asp.net控件开发学习笔记(二)-控件开发基础
2009-10-03 16:49 1314接上篇…….. 看System.Web.UI.Ht ... -
Asp.net控件开发学习笔记-控件开发基础(一)
2009-10-03 16:33 1219服务器控件开发基础 当开发一个服务器控件时,首 ... -
Asp.net用户退出,清空Session,重定向登陆页面
2009-09-28 16:22 4118protected void Page_Load(object ... -
frameset中的aspx无法Postback
2009-09-28 16:07 1462<frameset cols="150,*&q ... -
.net页面定时刷新的几种简单方式
2009-09-28 11:20 58821: window.setTimeout("win ... -
动态添加TextBox
2009-09-21 16:30 1651方法1: 前台代码: <f ... -
浅谈ASP.NET管道优化
2009-09-20 21:43 973ASP.NET管道优化 位于请求管道中的很多ASP.NET默 ... -
Asp.net 页面返回到上一页面
2009-09-20 21:20 874/// <summary> / ... -
PrecompiledApp.config文件和Global.asax 文件中的事件的关联
2009-09-19 10:24 2740在用Microsoft Visual Studio 2005开 ... -
gridview列 数字、货币和日期 显示格式
2009-09-11 17:05 1508在设置gridview等数据绑定控件的模版列时,总要 ... -
ASP.NET 打开新窗口几种方法
2009-09-09 21:44 3290ASP.NET打开新窗口方法一: Response ... -
response.addHeader("Content-Disposition","attachment; filename="+filename)中的中文乱码
2009-08-31 15:10 3175两种解决方法 1.如果web.config里utf-8 直接S ... -
技巧和诀窍:如何在VS 2005 SP1中使用VS的web服务器运行一个相对于根目录“/”的网站
2009-08-31 08:29 835大家常有一个疑问,是 ... -
Request.ServerVariables详细说明及代理
2009-08-14 10:46 2067ServerVariables是环境变量的集合。允许读取HTT ... -
DataList和Repeat无数据时提示暂无数据几种方法
2009-08-11 18:45 25331.放一个label DataTable table ... -
Asp.Net中清空所有textbox的几种方法
2009-08-08 08:53 5150用反射: FieldInfo[] info ...
相关推荐
asp.net,Datalist控件分页显示数据,绑定datatable 带有向前向后翻页
因此,在 asp.net中,分页很简单,但是默认的DataGrid分页事件会从数据库中把所 有的记录全部读出来放到asp.net web应用程序中。当你的数据在一百万以上的时候,这将引起 严重的性能问题(如果你不相信,你可以在你...
asp.net MVC web开发多种分页实例。
在以数据为中心的动态Web应用...本文结合ASP.NET与SQL(结构化查询语言)编程特性,深入研究了多种分页显示方法,并进行了相关性能的分析与比较,从而为不同应用环境而选用不同的分页技术,提供了较为完整的技术参考
asp.net文章分页:当我们的新闻字数很多的时候,想要分页怎么办?本项目里就有全部的方法
数据分页是Web应用程序开发中经常使用的一种技术,也是提高Web数据访问性能的主要手段。结合ASP.NET的优点,详细分析了ASP.NET中各种数据分页技术,并通过分析试验结果比较了各种数据分页技术的优缺点。
asp.net web 分页查询
<%@ Register Assembly="Web_AutoPageNum" Namespace="SomoWeb.Web_AutoPageNum" TagPrefix="Web_AutoPageNum" %> 三、网页中使用如下: <Web_AutoPageNum:Web_AutoPageNum runat="server" ID="Web_AutoPageNum1" />...
适用于 Asp.Net MVC 的分页。 也可以用于普通Asp.Net 分页,但需要适当修改。 本次使用 Asp.Net MVC 作为示例。 项目需要加载【 Newtonsoft.Json.dll】 组件。 数据库文件在【App_Data】文件中,附加到SQL2005即可...
数据分页是Web应用程序开发中经常使用的一种技术,也是提高Web数据访问性能的主要手段。本文结合ASP.NET,详细给出了两种ASP.NET海量分页数据存储的技术。
分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,...
asp.net中DataList控件中的自定义分页技术。以及数据后台绑定技术。
利用ASP.NET的缓存功能,结合性能良好的存储过程,一次性地缓存数据库数页数据,以供用户分页查询,是优化Web数据查询性能的比较理想的方式。文章详细介绍了优化模型的实现,并进行了性能分析
该文讨论了在ASP.NET 框架下对WEB 数据库几种实现分页 显示的方法。对利用自带分页功能的数据控件(如:DataGrid)和对于没有自带分页功能的控件(如:DataList)进行分页分别结合实例 进行了详细的阐述。
可以对于datagrid,repeater,datalist,进行快速分页 ,据说存储过程支持千万级数据库,没有测试过。 代码写起来很方便。 附带上数据库的存储过程。希望大家下载。
分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,...
ASP.NET中实现DataGrid数据排序.doc asp.net中的弹出对话框.doc ASP.NET中自定义控件的创建和使用.doc ASP.NET实现用户在线检测的类源码.txt ASP.NET常见问题集锦.zip ASP.NET弹出式日历选择控件的实现.doc ...
Asp.net手动绑定数据(分页、编辑、删除、加控件等操作) Asp.net中My97DatePicker4.2日期的使用 Asp.net中DataList控件添加删除 Asp.net获取请求的用户信息IP地址 获取世界IP地址库显所在城市信息 ...
asp.net针对SEO无控件分页达到SEO标准,没有用服务器控件,全是采用a标签和<ul><LI>来实现分页,对于想学习SEo开发的朋友可以来下载学习一下, 本人就是做SEo开发的,如有不懂的可以加我的QQ:418688311
数据库在文件夹DataBase下。 自己附加。或者执行数据文件(因数据库不同) 自己去改下Web.config连接字符串