分页解决方案 之 QuickPager的使用方法(PostBack分页、自定义获取数据)

 

 

      适用范围:网站后台管理、OA、CRM、CMS等,从关系型数据库里提取数据,或者XML等获取数据,不愿意使用Pager_SQL、DataAccessLibrary的情况。

      优点:可以使用自己喜欢的方式获取数据,不仅仅限于关系型数据库,其他的也都可以。

      缺点,要写的代码比较多。

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

      使用方法:

 

using JYK.Data;
using JYK.Controls;
using JYK.Controls.Pager;

namespace JYK.Manage.Help.QuickPager
{
    /**//// <summary>
    /// PostBack分页方式、自动提取数据的使用方法 
    /// </summary>
    public partial class PostBack02 : System.Web.UI.Page
    {
        //如果您不使用Pager_SQL和DataAccessLibrary的话,那么就不用下面两行代码了。
        QuickPagerSQL pagerSQL = new QuickPagerSQL();
        //数据访问函数库的实例
        DataAccessLibrary dal = DALFactory.CreateDAL();

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            
            //设置显示数据的控件
            Pager1.ShowDataControl = this.GV;

            //设置成自定义的方式获取
            Pager1.GetDataKind = PagerRunKind.Customer;

            pagerSQL.Page = this;
           
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //设置QuickPager_SQL的属性
                GetPagerSQL();

                //设置分页方式
                pagerSQL.SetPagerSQLKind = PagerSQLKind.MaxMin;


                //设置总记录数、总页数
                SetRecprdCount();

                //获取第一页的记录
                string sql = pagerSQL.GetSQLByPageIndex(1);

                //数据访问函数库的实例

                GV.DataSource = dal.ExecuteFillDataTable(sql);
                GV.DataBind();
            }

        }

        设置QuickPager_SQL的属性#region 设置QuickPager_SQL的属性
        private void GetPagerSQL()
        {
            //设置QuickPager_SQL的属性
            pagerSQL.Page = this;

            pagerSQL.TableName = "News_NewsInfo";          //表名或者视图名称
            pagerSQL.TableShowColumns = "*";               //需要显示的字段
            pagerSQL.TableIDColumn = "NewsID";             //主键名称,不支持复合主键
            pagerSQL.TableOrderByColumns = "NewsID"; //排序字段,根据分页算法而定,可以支持多个排序字段
            pagerSQL.TableQuery = "";                      //查询条件

            pagerSQL.PageSize = 4;                         //一页显示的记录数

            

        }
        #endregion

        设置总记录数、总页数#region 设置总记录数、总页数
        private void SetRecprdCount()
        {
            pagerSQL.CreateSQL();

            //获取总记录数,可以用count(*)统计,也可以使用其他方法获得。
            string AllCount = dal.ExecuteString(pagerSQL.GetRecordCountSQL);
            if (AllCount != null)
            {
                pagerSQL.RecordCount = int.Parse(AllCount);
            }

            pagerSQL.ComputePageCount();

            Pager1.RecordCount = pagerSQL.RecordCount;
            Pager1.PageCount = pagerSQL.PageCount;

        }
        #endregion

        在拼接SQL和提取数据、自动绑定控件之前触发,#region 在拼接SQL和提取数据、自动绑定控件之前触发,
        protected void Pager1_PageChanged(object sender, JYK.Controls.Pager.PageArgs e)
        {
            //您可以使用下面提供的方法获得数据,也可以使用其他的方法获得记录。
            //e.CurrentPageIndex:想要翻到的页号。
             
            string sql = pagerSQL.GetSQLByPageIndex(e.CurrentPageIndex );

            GV.DataSource = dal.ExecuteFillDataTable(sql);
            GV.DataBind();


            Response.Write("绑定前<BR>");
        }
        #endregion

        在自动绑定控件之后触发,#region 在自动绑定控件之后触发,
        protected void Pager1_GridBinded(object sender, JYK.Controls.Pager.PageArgs e)
        {
            //在自动绑定控件之后触发
            //计算时间
            Response.Write("绑定后,使用的SQL语句:");
        }
        #endregion

        处理查询数据的情况#region 处理查询数据的情况
        protected void Btn_Search_Click(object sender, EventArgs e)
        {
            //获取查询条件
            string query = "";
            string tmp = "";

            tmp = this.Txt_Title.TextTrimNone;
            if (tmp.Length > 0)
            {
                if (query.Length == 0)
                    query = " title like '%" + tmp + "%'";
                else
                    query += " and title like '%" + tmp + "%'";

            }

            //还可以添加其他的查询条件,这里省略

            //给QuickPager_SQL 设置查询条件
            this.pagerSQL.TableQuery = query;
            //重新拼接SQL语句
            this.pagerSQL.CreateSQL();
            
            //绑定控件,显示第一页的数据
            string sql = pagerSQL.GetSQLByPageIndex(1);

            GV.DataSource = dal.ExecuteFillDataTable(sql);
            GV.DataBind();

            //设置总记录数、总页数
            SetRecprdCount();

            //修改分页控件的UI。
            Pager1.PageIndex = 1;
            Pager1.SetPagerUI();

        }
        #endregion

    }
}

时间: 2024-10-23 23:32:21

分页解决方案 之 QuickPager的使用方法(PostBack分页、自定义获取数据)的相关文章

分页解决方案 之 QuickPager的使用方法(目录)

        QuickPager asp.net 2.0 分页控件,基本告一段落.现在把使用方法.源码.Demo公布一下,感兴趣的可以下载看看.       一.从提取数据的角度开看,可以分为"自动"和"自定义"两种.       "自动"就是分页控件内部利用Pager_SQL和DataAccessLibrary,"自动"获取数据,然后绑定到显示数据的控件.而且可以自动处理分页产生的事件.就是说用了"自动&quo

分页解决方案 之 QuickPager的使用方法(PostBack分页、自动获取数据)

        适用范围:网站后台管理.OA.CRM.CMS等,从关系型数据库里提取数据,愿意使用Pager_SQL.DataAccessLibrary的情况.       最佳数据库:MS SQL.       优点:只需要设置几个属性即可,不用编写"分页事件"的处理代码.可以很方便的实现查询功能,以及保存查询条件.       Demo下载:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html       使用方法:

分页解决方案 之 QuickPager的使用方法(URL分页、自动获取数据)

        适用范围:网站前台页面 等,从关系型数据库里提取数据,愿意使用Pager_SQL.DataAccessLibrary的情况.       优点:使用URL的方式,对于SEO比较友好.       缺点:保留查询状态没有太好的办法,GO的功能没有实现,有空看看别人是怎么做的.       Demo下载:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html       使用方法:     using JYK.Data;u

分页解决方案 之 QuickPager的使用方法(在UserControl里面使用分页控件的方法)

          因为我一直没有在UserControl里面使用过QuickPager分页控件,我都是直接在.aspx里面使用,所以这个bug一直没有发现.后来告诉我他把分页控件放在了UserControl里面无法翻页的情况,检查之后才发现分页的事件没有传递到UserControl里面的分页控件里面,就是说分页控件没有得到分页事件.改了半天也没有找到从正规的方式来解决,所以只好采用了一个笨办法来解决.在UserControl里面使用分页控件的时候也稍稍有一点不同.       一般的情况是这么

分页解决方案 —— GridView + QuickPager + QuickPager_SQL + DataAccessLibrary + 数据库

      这里要说的不仅仅是一个分页控件,而是一套解决方案,包括如何显示数据.显示分页导航,如何得到分页用的sql语句(等效于存储过程),如何提取数据,如何绑定控件,如何响应事件,添加.修改.删除数据后如何更新,如何查询数据等等.一整套完整的解决方案.       这个方案要有几个特点:       1.支持多种数据库,可以提供多个分页算法以便于支持多种数据库.       2.可以在不同的要求下选用最优的分页算法.比如如果只需要按照主键排序,那么选择Max分页算法无疑是最快的一种分页算法.

分页解决方案 之 数据访问函数库——另类的思路、另类的写法,造就了不一样的发展道路。

      上一篇:分页解决方案 -- GridView + QuickPager + QuickPager_SQL + DataAccessLibrary + 数据库         如何访问数据库?一个老掉牙的问题,方法多了去了,什么直接使用ado.net.使用SQLHelp.使用微软的企业库.使用ORM.使用LinQ to SQL等等,还可以使用自己封装的函数库,这里我就想说一下我的数据访问函数库的使用方法.       您可能会说了,这么简单的东东还用说吗,重复制作轮子有意义吗?这个嘛,

分页解决方案之GridView+QuickPager+QuickPager_SQL+DataAccessLibrary+数据

分页解决方案之GridView+QuickPager+QuickPager_SQL+DataAccessLibrary+数据库 这里要说的不仅仅是一个分页控件,而是一套解决方案,包括如何显示数据.显示分页导航,如何得到分页用的sql语句(等效于存储过程),如何提取数据,如何绑定控件,如何响应事件,添加.修改.删除数据后如何更新,如何查询数据等等.一整套完整的解决方案. 这个方案要有几个特点: 1.支持多种数据库,可以提供多个分页算法以便于支持多种数据库. 2.可以在不同的要求下选用最优的分页算法

miniui datagrid的客户端分页解决方案

官方的解决方案 官方在"在线示例"中给了一个简单的 client pagination 解决方案,代码就不贴了,这里说说它的基本思想和处理过程. 首先,是绑定一个 preload 事件,在这个事情中设置 event.cancel = true,阻止 datagrid 在翻页的时候向服务器请求加载数据. 那么数据从哪来呢?当然只有在外部写一个 ajax 过程获取了.不过取得的数据并不直接交给 datagrid,而是缓存起来,放在dataResult 中. 现在继续说 preload,除了

linq 去掉重复数据 再调用分页方法(分页分发已有)

问题描述 适合调用这个方法的(有更适合的分页方法也可以!)新手求指教! 解决方案 解决方案二:首先,重复数据的定义是什么?所有字段重复么?然后,为什么数据库里有重复数据?解决方案三:引用1楼romanchaos的回复: 首先,重复数据的定义是什么?所有字段重复么?然后,为什么数据库里有重复数据? 根据指定的的字段进行分组每一组只留下一条数据再把剩余的数据进行分页解决方案四:query=query.Groupby(c=>c.分组字段).select(c=>c.first()不知道行不行.没试过,