您的位置:首页 > 其它

自定义分页控件

2009-11-13 21:21 134 查看
页面中数据的分页功能常常是令程序员比较头疼的一件事情,并非是技术原因,而是分页的繁琐(包括:风格统一、参数的维护……)。ASP.NET控件中的 GridView和DataGrid等都直接支持分页,但这两中控件所擅长的是处理表格数据,而我们往往需要的显示风格要比表格丰富的多;以我往常经验, 我比较喜欢Repeater,可一随心所欲的驾驭它来完成任何复杂的显示,但可惜的是它没有提供自动的分页功能。

我们何不把这分页功能给封装起来呢?

让我们来分析一下分页的封装到底要实现那些功能: 数据显示控件不应该关心“页”的问题,因为它的功能是显示数据,你只需要把它要显示的数据给它就行了;
你必须承认分页的独立性,它与任何显示控件物理上是隔离的,所以我们在设计该控件时不应该考虑任何数据显示控件;
分页控件需要维护一个“当前页”、“页大小”的上下文;
要确定分页控件的数据无关性(这里的“数据”指的是在数据显示控件中显示的数据),数据显示控件的数据源应该由系统的“业务层”提供, 而业务层的数据提供服务所查询的具体数据有分页控件的“当前页”、“页大小”确定(如:GetData(int pageIndex,int pageSize););
分页控件必须能够维护当前页面的参数;
分页控件能够维护统一的风格(由用户指定显示样式,否则就显示默认样式)。
根据以上的分析,我们就可以来设计“分页控件”(SimplePaper)了,看看咱们的实现代码吧:

首先实现的是SimplePaper维护的数据及属性,每个属性的描述这里就不再详述了
1 private string _class;
2 private int _pageSize = 10;
3 private int _numberCount = 10;
4 private int _virtualCount = 0;
5
6 private string _prevText = "上一页";
7 private string _nextText = "下一页";
8 private string _firstText = "第一页";
9 private string _lastText = "最末页";
10
11 [Category("Behavior")]
15 [Description("Css的样式类名称")]
16
25 [Category("Behavior")]
29 [Description("上一页文本")]
30
39 [Category("Behavior")]
43 [Description("下一页文本")]
44
53 [Category("Behavior")]
57 [Description("第一页文本")]
58
67 [Category("Behavior")]
71 [Description("最末页文本")]
72
81 [Category("Behavior")]
85 [Description("页大小")]
86
95 [Category("Behavior")]
99 [Description("分页中要显示的页码数量")]
public int NumberCount {
get {
return _numberCount;
}
set {
_numberCount = value;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: