【开源】QuickPager ASP.NET2.0分页控件V2.0.0.4 增加了几个分页算法
最近忙一个项目,没有太多的时间来升级分页控件。不过还是生了一下,V2.0.0.4。变化不是太大,修改了一个属性的名称,增加了两种分页算法,还有两个分页算法的组合方式。
原来的 SetGetDataKind 属性名称改成了 SetRunKind。这个是由于一开始没有规划好,导致了名称的冲突。含义没有变化。
增加了两个分页算法:Max分页和颠倒分页(就是Top的嵌套)。
Max的优点就是简单高效,可以很容易的利用索引,缺点就是,排序字段只能有一个,而且排序字段的值不能有重复的。
颠倒Top法,优点是可以设置多个排序字段(当然一个也可以),缺点呢就是写起来有点复杂(当然这个在分页控件内部处理了),效率比Max要慢一点,但是比表变量要快一点。和Row_Number的分页算法的优势就是可以在SQL Sercer 2000 和 Access、Excel里面使用。Row_Number只能在SQL Server2005里面使用。
这两个分页算法各有优缺点,如何能够取长补短,那该多好呀。这个也不是不可能的呀,于是我又加了两种分页算法,这两个不是单独存在的,而是把现有的两种分页算法“组合”在一起。
Max_TopTop:会根据排序字段的数量来判断,如果是一个排序字段,那么就采用max的分页算法;如果是多个排序字段,那么就采用颠倒top的方法。
Max_TableVar:和上面的类似。有些人喜欢使用表变量,不喜欢top嵌套,更不喜欢颠来倒去的,那么没关系,可以选用这种分页算法。
其他的就像不说了,有空再详细说明一下分页控件的内部结构可采用的设计模式和遵循的原则。
源码下载地址:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html
使用方法请查看以前的帖子,谢谢。有空在整理一下。
多种分页算法的调用方法,在属性里面实现。
/**//// 分页算法的实例
public PageManage.PageSQL ManagerPageSQL
{
set { MgrPageSQL = value; }
get
{
PageManage.PageSQL tmp = MgrPageSQL;
if (tmp == null)
{
switch (SetSQLKind)
{
case myPageSQLKind.Row_Number:
tmp = new JYK.Controls.PageManage.SQL_Row_Number();
break;
case myPageSQLKind.TableVar:
tmp = new JYK.Controls.PageManage.SQL_TableVar();
break;
case myPageSQLKind.MaxMin:
tmp = new JYK.Controls.PageManage.SQL_Max();
break;
case myPageSQLKind.TopTop :
tmp = new JYK.Controls.PageManage.SQL_TopTop();
break;
case myPageSQLKind.Max_TopTop :
if (this.TableOrderColumns.Contains(","))
{
//多字段排序
CommandClass.MsgBox("Max_TopTop2", false);
tmp = new JYK.Controls.PageManage.SQL_TopTop();
}
else
{
//一个排序字段
CommandClass.MsgBox("Max_TopTop1", false);
tmp = new JYK.Controls.PageManage.SQL_Max();
}
break;
case myPageSQLKind.Max_TableVar :
if (this.TableOrderColumns.Contains(","))
{
//多字段排序
tmp = new JYK.Controls.PageManage.SQL_TableVar();
}
else
{
//一个排序字段
tmp = new JYK.Controls.PageManage.SQL_Max();
}
break;
}
MgrPageSQL = tmp;
}
if (tmp.myPage == null)
tmp.myPage = this;
return tmp;
}
}
- Kafka集群安装
- 知其所以然之永不遗忘的算法
- ZOOKEEPER集群搭建及测试
- 【Python环境】Scikit-Learn:开源的机器学习Python模块
- 【Python环境】可爱的 Python: 自然语言工具包入门
- 电脑静音工作,又听不到12306的来票音乐,纠结啊 !但春节前工作多任务重,不能安心工作,就动手做个“无声购票弹窗”工具吧!
- .net访问PostgreSQL数据库发生“找不到函数名”的问题追踪
- “领域驱动开发”实例之旅(1)--不一样的开发模式 一、分析业务需求。 二、设计领域对象模型 三、测试领域对象模型 四、设计业务处理类 五、设计Entity和Vi
- Java基础——左移和右移
- 【Python环境】利用 Python、SciKit 和文本分类来实现行为分析
- LJMM平台( Linux +Jexus+MySQL+mono) 上使用MySQL的简单总结
- 判断两个单链表是否相交(有环、无环两种)
- 【数据科学家】SparkR:数据科学家的新利器
- KMP算法浅析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP的cookie与session原理及用法详解
- Thinkphp5.0框架视图view的循环标签用法示例
- Thinkphp5.0 框架视图view的比较标签用法分析
- laravel 操作数据库常用函数的返回值方法
- laravel 验证错误信息到 blade模板的方法
- thinkPHP+LayUI 流加载实现功能
- Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
- laravel5.2表单验证,并显示错误信息的实例
- ThinkPHP 5.1 跨域配置方法
- PHP调用接口API封装的例子
- php-fpm超时时间设置request_terminate_timeout资源问题分析
- laravel框架添加数据,显示数据,返回成功值的方法
- PHP的静态方法与普通方法用法实例分析
- 解决PHP使用CURL发送GET请求时传递参数的问题
- php弹出提示框的是实例写法