专栏首页更流畅、简洁的软件开发方式【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 【增加了使用说明】

【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 【增加了使用说明】

最新版本:V2.0.0.7 。http://www.cnblogs.com/jyk/archive/2008/07/28/1255101.html

下载:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html

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

    增加了几个属性、两个事件、修改了一下内部的代码。分页控件的大体结构终于确定下来了。详细说明一下功能吧。 1、基本信息     控件名称:QuickPager ASP.Net2.0 分页控件。     版本:V2.0.0.3。     IDE:vs2005、vs2008。     语言:C#     Framework:.net 2.0。 2、两种分页方式: PostBack 和 URL。目前URL的分页方式不太完善。 3、两种数据提取方式:         a、自动。由分页控件负责UI的绘制、计算总记录数、总页数、提取数据、事件的处理和绑定控件等功能。         b、自定义。有调用控件者提供总记录数、数据的处理和控件绑定等,分页控件仅负责UI的绘制、计算页数和事件的触发(不对事件作具体的处理,仅通知调用者)。 4、数据源:自定义数据提取方式不限制数据库,自动分页方式目前支持SQL 2000、SQL2005,下一个版本会支持Access、Excell。

目前可以选择的分页算法:Row_Number(仅支持SQL2005)、表变量(支持SQL 2000 、SQL2005)。 5、支持的显示数据的控件:DataGrid、GridView、DataList、Repeater等。只要有DataSource、DataBind的控件都可以。 6、功能:分页。包括UI的绘制、分页算法(根据属性组合成SQL语句)、提取数据、绑定控件、计算总记录数(可以保存以提高效率)服务器控件,引用DLL即可。

7、2.0.0.3新增加了两个事件:     PageChanged 在页号改变的时候触发,可以使用这个事件达到自定义提取数据的目的。 GridBinded 在绑定控件后出发,采用自动提取数据的方式的时候可以修饰一下GridView控件。 8、新增了三个属性 SetGetDataKind 提取数据的方式,myPageGetDataKind.Customer 自定义;myPageGetDataKind.Auto 自动。 SetUIKind 分页方式,myPageUIKind.PostBack ;myPageUIKind.URL 。 SetPageRecordCount = 200; 在采用自定义方式提取数据的时候,必须设置总记录数。 SetSQLKind 可以选择的分页算法,myPageSQLKind.TableVar 表变量,myPageSQLKind.Row_Number 。以后还会增加几个。(这个属性以前的版本就有了。) 9、结构图:

在项目里添加控件地方法:http://www.cnblogs.com/jyk/archive/2008/07/05/1231337.html 分页控件的源码下载网址:http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html 一会写一下详细的使用说明。 关于自定义事件的问题,十分感谢园子里的兄弟,帮了很大的忙。 QuickPager v2.0.0.3的使用方法:     老规矩,先修改 web.config里面的连接字符串的设置。demo使用的是 SQL 2000里面的 northwind数据库, sa ,admin。如果您的环境是一样的话,那就可以下不用修改了。     另外由于分页控件改了一下名称,所以如果您的工具箱里添加了以前版本的分页控件,那么还得麻烦一下,先把原来的删除掉,在重新添加一下。工具箱里添加控件的方法:myPage —— asp.net分页控件的使用示例。基本应用和查询功能 1、自定义提取数据 + PostBack分页     有兄弟说我的分页控件“管得太多”了,数据处理的不应该包含在分页控件里面,如果您还有更好的处理数据地方法,或者分页控件自带的提取数据的方法不能满足您的需求(比如您相对XML进行分页)的话,可以使用这种方法。这个应该和吴旗娃的分页控件的使用方式是一样的。采用这种方法,分页控件只负责UI的绘制,页数的计算(需要设置总记录数和一页的记录数)和翻页时触发事件,其他的事情就要自行处理了。     代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
            ShowData();
    }

    private void ShowData()
    {
        //给分页控件赋值
        //自定义提取数据的方式
        myPage1.SetGetDataKind = JYK.Controls.Page.myPageGetDataKind.Customer;

        myPage1.PageSize = 15;      //一页显示的记录数。
        myPage1.NaviCount = 8;      //页号导航的个数。
        myPage1.SetPageRecordCount = 1000;      //直接设置总记录数。获取总记录数方式自由发挥:)

        //ok。
        //提取数据就自己写了,因为这里是自定义提取数据的演示。
    }

    protected void myPage1_PageChanged(object sender, JYK.Controls.Page.PageArgs e)
    {
        //页号改变时触发的事件
        Response.Write(e.CurrentPageIndex);     //要翻到的页号

        //由于我不会自己提取数据,我都是用分页控件的,所以这里的实现代码您自己写吧。
        //如果您也不熟的话,建议采用自动获取数据的方式。
    }

2、自定义提取数据 + URL分页的演示     这个和上面的类似,如何处理数据还是要自己处理的。     代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        ShowData();
    }

    private void ShowData()
    {
        //给分页控件赋值

        //自定义提取数据的方式
        myPage1.SetGetDataKind = JYK.Controls.Page.myPageGetDataKind.Customer;

        //URL的分页方式
        myPage1.SetUIKind = JYK.Controls.Page.myPageUIKind.URL;

        myPage1.PageSize = 15;      //一页显示的记录数。
        myPage1.NaviCount = 8;      //页号导航的个数。
        myPage1.SetPageRecordCount = 1000;      //直接设置总记录数。获取总记录数方式自由发挥:)

        string tmpPageIndex = Request.QueryString["pageno"];
        if (!Functions.IsInt(tmpPageIndex))
        {
            tmpPageIndex = "1";
        }

        Int32 pageIndex = Int32.Parse(tmpPageIndex);

        if (pageIndex > myPage1.PageCount)
            pageIndex = myPage1.PageCount;


        //显示第 pageIndex 页的数据,自定义提取数据的方式,所以请自己处理,呵呵。
        Response.Write(pageIndex);

        myPage1.PageIndex = pageIndex;  //设置页号。URL的方式还没有优化

        //ok。
        //提取数据就自己写了,因为这里是自定义提取数据的演示。
    }

3、自动提取数据 + PostBack分页的演示     这个就是原先版本的方法,只是有一点变化,原来的 BindFirstPage() 方法不用再写了,又少了一行代码,呵呵。     代码:请注意事件的应用。

 private DateTime dt1;
    private DateTime dt2;

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Cache.SetNoStore();

        dt1 = DateTime.Now;
        dt2 = DateTime.Now;

        if (!Page.IsPostBack)
        {
            setPageInfo();
        }
    }

    设置分页控件的属性

    protected void myPage1_PageChanged(object sender, JYK.Controls.Page.PageArgs e)
    {
        //页号改变时触发的事件,在自动获取数据的情况下,可以不处理这个事件。
        //e.CurrentPageIndex     //要翻到的页号

        //这里用作计时。
        TimeSpan ts = DateTime.Now - dt1;
        Lbl_msg.Text = "组合SQL需要的时间:" + ts.Seconds + "秒" + ts.Milliseconds + "毫秒<BR>";
        
    }
    protected void myPage1_GridBinded(object sender, JYK.Controls.Page.PageArgs e)
    {
        //绑定GridView后触发的事件,在自动获取数据的情况下,可以不处理这个事件。
        TimeSpan ts = DateTime.Now - dt2;
        Lbl_msg.Text += "组合SQL和提取数据、绑定控件需要的时间:" + ts.Seconds + "秒" + ts.Milliseconds + "毫秒<BR>";

    }

4、自动提取数据 + URL分页的演示     这个还有点小问题,将在下一个版本里修改,这里就先不说了。 5、同一个页面使用两个分页控件的演示(仅限PostBack分页)     有的时候我们需要在同一个网页对多个表(或者多表联合)进行分页,就是说一个页面需要放两个(或多个)不同的分页控件,那么要怎么设置呢?其实也很简单,分页控件和GridView对应正确就可以了。目前仅限于PostBack的分页方式。     稍微修改一下就可以实现一个页面,多个数据库的分页了。这个在下一个版本里说明。     代码:

private DateTime dt1;
    private DateTime dt2;

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Cache.SetNoStore();

        dt1 = DateTime.Now;
        dt2 = DateTime.Now;

        Lbl_msg.Text = "";

        if (!Page.IsPostBack)
        {
            setPageInfo1();
            setPageInfo2();
        }
    }

    设置分页控件的属性

    设置分页控件的属性

    protected void myPage1_PageChanged(object sender, JYK.Controls.Page.PageArgs e)
    {
        //这里用作计时。
        TimeSpan ts = DateTime.Now - dt1;
        Lbl_msg.Text += "[控件1]组合SQL需要的时间:" + ts.Seconds + "秒" + ts.Milliseconds + "毫秒<BR>";

    }
    protected void myPage1_GridBinded(object sender, JYK.Controls.Page.PageArgs e)
    {
        //绑定GridView后触发的事件,在自动获取数据的情况下,可以不处理这个事件。
        TimeSpan ts = DateTime.Now - dt2;
        Lbl_msg.Text += "[控件1]组合SQL和提取数据、绑定控件需要的时间:" + ts.Seconds + "秒" + ts.Milliseconds + "毫秒<BR>";

    }
    protected void myPager2_GridBinded(object sender, JYK.Controls.Page.PageArgs e)
    {
        TimeSpan ts = DateTime.Now - dt1;
        Lbl_msg.Text += "[控件2]组合SQL需要的时间:" + ts.Seconds + "秒" + ts.Milliseconds + "毫秒<BR>";

    }
    protected void myPager2_PageChanged(object sender, JYK.Controls.Page.PageArgs e)
    {
        TimeSpan ts = DateTime.Now - dt2;
        Lbl_msg.Text += "[控件2]组合SQL和提取数据、绑定控件需要的时间:" + ts.Seconds + "秒" + ts.Milliseconds + "毫秒<BR>";

    }

温馨提示: SetGetDataKind 数据提取方式(默认:自动提取) SetSQLKind 分页算法 (默认:表变量) SetUIKind 分页方式 (默认:PostBack) 这三个属性在控件的属性窗口设置更为方便。 分页控件的demo下载网址:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【实现】表单控件里的子控件的变化。

         上一篇说的是表单布局上的变化,也就是通过TR、TD的设置,实现了多行多列的效果。那么格子画好了,我们 可以往里面放控件了。上次都是用的文本框,这个显然...

    用户1174620
  • 自然框架,拆分后的项目关系

      拆分了一下自然框架,似乎又绕回去了。以前是多个项目分开放的,有人说太分散了,还得一个个下载,麻烦。于是就做了一个解决方案,把项目都放在了一起。   现在呢,...

    用户1174620
  • 【自然框架】之 “工作日志”和“选择日期”

          上周回家办点事,更新的事情就有耽搁了。对不住大家,所以这周要努力了。       我发现要做的事情太多了,做过了哪些事情也都记不清了,所以有必要弄个...

    用户1174620
  • VS2017移动开发(C#、VB.NET)——Numeric控件的使用方式

    若将该属性设置为“0”,该控件的背景色即为全透明的,显示为Smobiler窗体设计界面的背景色。

    Amanda.li
  • 动态控件的新思路

            常常有如此感叹:动态控件好加,但是状态维持困难。就是说,加入动态控件很容易,关联处理事件也不难,但是对于控件的状态把握,却很麻烦。往往需要在lo...

    用户1075292
  • 小白学编程实战项目-利用Winform开发美女音乐播放器

    这是小白学习软件开发系列课程,旨在帮助对电脑编程感兴趣的朋友学习并熟悉C#技术。其中基础部分已经讲解完毕,可以查看:电脑编程入门(10)-C#面向对象编程浅聊,...

    做全栈攻城狮
  • ActiveX 暴漏你所有信息的可怕的插件!

    最近在项目中经常接触ActiveX控件,对于这个名词相信只要是上网看视频的用户一定都会遇到adobe更新或者加载的提示,这就是一个ActiveX控件。一直以为A...

    西门呀在吹雪
  • IE6查看ActiveX控件是否已经安装以及版本号

    最近经常要处理控件问题,ie6+可以直接Internet选项,程序中看到已经安装的控件以及版本号等信息,万恶的ie6确看到不到控件的具体版本信息。

    西门呀在吹雪
  • C#控件命名规范

    1、 本规范是个人平时使用时为方便个人使用而制定的一套规范,有很多地方不易记忆与理解,后续在具体的使用过程中会做一定的改动。

    lzugis
  • C# C/S控件库HZHControls使用指南

    HZHControls是一个基于.Net Framework4.0,扁平化的、漂亮的、开源的C/S控件库,这是官网的介绍,也就是作者专门开发的一套可以在C/S客...

    zls365

扫码关注云+社区

领取腾讯云代金券