对于少量的数据,我们可以用GridView的自带分页功能,而如果数据量大了,这种方式就显得有些笨拙了,在网上查了查,发现很多高手都用分页的存储过程来对数据进行按需查询。有前辈把存储过程写成了通用的,我弄了几个这种通用存储过程试了试,就是用不对啊。最后就想自己写个吧,些是写出来了,可毕竟自己功力不够啊,写出的存储过程有很多局限性,例如:只能针对单表,表的主键类型不同的话还要修改一下存储过程才可用。不过我自己用,有时候还是可以减轻一些工作了。
    现在面临的问题是,在UI层如何来调用呢,我们要根据用户的操作来确定应该查询哪些记录,于是根据我的需求,写了个自定义控件来实现这个功能(也许我的工作是画蛇添足了,或许有其他更好的分页方?)。首先写了一个符合控件(就是显示“上页、下页”的哪些东西了),来改变和记录用户选择的页数,另外写了一个继承自ObjectDataSource的控件。两个控件协同工作,完成分页功能。
   下面贴出代码:

一、SQLServer部分
  分页存储过程如下:
GO

我的表是这样的:
用于存储过程分页的控件--CREATE DATABASE ZrkjDb
用于存储过程分页的控件
GO
用于存储过程分页的控件
USE ZrkjDb
用于存储过程分页的控件
GO
用于存储过程分页的控件
用于存储过程分页的控件
--===============================

获取记录的存储过程:
用于存储过程分页的控件--===============================

二、自定义控件代码:

分页控件(Pager.cs):
用于存储过程分页的控件using System;
用于存储过程分页的控件
using System.Collections;
用于存储过程分页的控件
using System.Collections.Generic;
用于存储过程分页的控件
using System.ComponentModel;
用于存储过程分页的控件
using System.Text;
用于存储过程分页的控件
using System.Web;
用于存储过程分页的控件
using System.Web.UI;
用于存储过程分页的控件
using System.Web.UI.WebControls;
用于存储过程分页的控件
用于存储过程分页的控件
namespace Zrkj.WebControl

数据源控件(PagedObjectDataSource)

用于存储过程分页的控件using System;
用于存储过程分页的控件
using System.Collections.Generic;
用于存储过程分页的控件
using System.ComponentModel;
用于存储过程分页的控件
using System.Text;
用于存储过程分页的控件
using System.Web;
用于存储过程分页的控件
using System.Web.UI;
用于存储过程分页的控件
using System.Web.UI.WebControls;
用于存储过程分页的控件
用于存储过程分页的控件
namespace Zrkj.WebControl

三、前台调用代码:

Default.aspx:

Default.aspx.cs:
用于存储过程分页的控件using System;
用于存储过程分页的控件
using System.Data;
用于存储过程分页的控件
using System.Configuration;
用于存储过程分页的控件
using System.Collections;
用于存储过程分页的控件
using System.Web;
用于存储过程分页的控件
using System.Web.Security;
用于存储过程分页的控件
using System.Web.UI;
用于存储过程分页的控件
using System.Web.UI.WebControls;
用于存储过程分页的控件
using System.Web.UI.WebControls.WebParts;
用于存储过程分页的控件
using System.Web.UI.HtmlControls;
用于存储过程分页的控件
using Zrkj.WebDataProxy;
用于存储过程分页的控件
using Zrkj.Model;
用于存储过程分页的控件
public partial class tst_Default : System.Web.UI.Page

至此,分页功能基本实现。

如果哪位仁兄在网上无意之中看到这篇文章,请勿见笑。
初学者,战战兢兢!

相关文章: