【开源】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;
            }
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漏斗社区

CTF| SQL注入之login界面

SQL注入是CTF WEB方向必不可少的一种题型,斗哥最近也做了一些在线题目,其中最常见的题目就是给出一个登录界面,让我们绕过限制登录或者一步步注入数据。 万...

2.7K80
来自专栏菩提树下的杨过

SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易

目录 CLR 用户定义函数 模式匹配 数据提取 模式存储 匹配 在匹配项中进行数据提取 总结 尽管 T-SQL 对多数数据处理而言极其强大,...

42860
来自专栏Kevin-ZhangCG

Java开发岗面试知识点解析

387110
来自专栏owent

小记最近踩得两个C++坑

记一下最近踩得两个C++独有的暗坑,其中一个和ABI相关。第二个坑其实之前研究过,但是没有实例,这次算是碰到了个典型的实例。

12320
来自专栏FreeBuf

VLC播放器加载恶意字幕文件导致执行任意代码漏洞分析与POC实现

今年5月23号的时候,听说checkpoint搞了个大新闻:vlc等播放器加载特定字幕可以完全控制用户电脑。当时我就震惊了:还有何种操作。想想看,当你吃着辣条,...

43240
来自专栏安恒网络空间安全讲武堂

Thinkphp5实现安全数据库操作以及部分运行流程分析

文章的灵感来自于此文ThinkPHP3.2.3框架实现安全数据库操作分→https://xz.aliyun.com/t/79

67830
来自专栏C/C++基础

*** glibc detected *** malloc(): memory corruption

在Linux Server上不好模拟出来:不过若是先malloc,再越界memset,再free此内存块,然后malloc新内存块就会出现类似错误。

39520
来自专栏小樱的经验随笔

设计模式六大原则(4):接口隔离原则

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类...

33070
来自专栏Hongten

struts2开发_validation_struts2客户端校验

==============================================

11820
来自专栏一名叫大蕉的程序员

您需要来一份82年的代理吗?No.12

上一篇大家又说我放水了。这样说我很伤心的啵。今天跟大家分享一下代理模式以及JAVA中的代理模式。 代理模式有什么用呢?我总结的一点就是,让别人代理安全一点。 现...

19670

扫码关注云+社区

领取腾讯云代金券