开发者社区> 金色海洋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——分页控件的源码(一) 主体

简介: namespace JYK.Controls{    /**////     /// 分页控件    /// PageGetData.cs 负责提取数据    /// PageSQL.cs 负责生成SQl语句    /// PageUI.
+关注继续查看

namespace JYK.Controls
{
    
/**//// <summary>
    
/// 分页控件
    
/// PageGetData.cs 负责提取数据
    
/// PageSQL.cs 负责生成SQl语句
    
/// PageUI.cs 负责分页控件的页面内容
    
/// </summary>

    [DefaultProperty("Text")]
    [ToolboxData(
"<{0}:JYKPage runat=server></{0}:JYKPage>")]
    
public class JYKPage : WebControl, INamingContainer, IPostBackEventHandler 

    
{
        
/**//// <summary>
        
/// 访问数据库用的实例
        
/// </summary>

        private  DataAccessHelp dal = null;

        
/**//// <summary>
        
/// 生成SQL语句的部分
        
/// </summary>

        private PageManage.PageSQL MgrPageSQL = null;

        
/**//// <summary>
        
/// 提取数据的部分
        
/// </summary>

        private PageManage.PageGetData MgrGetData = null;

        
/**//// <summary>
        
/// 提取数据的部分
        
/// </summary>

        private PageManage.PageUI MgrPageUI = null;

        
/**//// <summary>
        
/// 设置显示数据的控件
        
/// </summary>

        public System.Web.UI.WebControls.WebControl ControlGrid;
 
        
成员#region 成员
        
        
页面显示#region 页面显示
        
/**//// <summary>
        
/// 上一页 的文字
        
/// </summary>

        private string pPrevText = "上一页";   //上一页

        
/**//// <summary>
        
/// 下一页 的文字
        
/// </summary>

        private string pNextText = "下一页";   //下一页

        
/**//// <summary>
        
/// 首页 的文字
        
/// </summary>

        private string pFirstText = "首页";   //首页

        
/**//// <summary>
        
/// 末页 的文字
        
/// </summary>

        private string pLastText = "末页";   //末页
        
        
/**//// <summary>
        
/// 去指定页号 的文字
        
/// </summary>

        private string pGOText = "GO";   //GO
        
        
#endregion


        
#endregion


        
属性#region 属性

        
存放分页算法模版的属性#region 存放分页算法模版的属性
        
//记录数
        记录相关#region 记录相关
        
一页的记录数#region 一页的记录数
        
/**//// <summary>
        
/// 一页的记录数
        
/// </summary>

        [Bindable(true)]
        [Category(
"记录集")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public Int32 PageSize
        
{
            
set { ViewState["PageSize"= value; }
            
get
            
{
                
//没有设置的话,使用默认值:一页20条记录
                if (ViewState["PageSize"== nullreturn 20; }
                
else return (Int32)ViewState["PageSize"]; }
            }

        }

        
#endregion


        
符合条件的记录数#region 符合条件的记录数
        
/**//// <summary>
        
/// 符合条件的记录数
        
/// </summary>

        [Bindable(true)]
        [Category(
"记录集")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public Int32 PageRecordCount
        
{
            
set { ViewState["PageRecordCount"= value; }
            
get
            
{
                
//没有设置的话,返回 0 
                if (ViewState["PageRecordCount"== nullreturn 0; }
                
else return (Int32)ViewState["PageRecordCount"]; }
            }

        }

        
#endregion


        
页数#region 页数
        
/**//// <summary>
        
/// 页数
        
/// </summary>

        [Bindable(true)]
        [Category(
"记录集")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public Int32 PageCount
        
{
            
set { ViewState["PageCount"= value; }
            
get
            
{
                
//没有设置的话,返回 0 
                if (ViewState["PageCount"== nullreturn 0; }
                
else return (Int32)ViewState["PageCount"]; }
            }

        }

        
#endregion


        
想要查看哪一页的数据#region 想要查看哪一页的数据
        
/**//// <summary>
        
/// 想要查看那一页的数据
        
/// </summary>

        [Bindable(true)]
        [Category(
"记录集")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public Int32 PageIndex
        
{
            
set { ViewState["PageIndex"= value; }
            
get
            
{
                
if (ViewState["PageIndex"== nullreturn 1; }
                
else return (Int32)ViewState["PageIndex"]; }
            }

        }

        
#endregion


        
#endregion

        
//SQL语句的基础
        分页算法需要的属性#region 分页算法需要的属性
        
表名、视图名#region 表名、视图名
        
/**//// <summary>
        
/// 表名、视图名
        
/// </summary>

        [Bindable(true)]
        [Category(
"SQL语句")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string TableName
        
{
            
set { ViewState["TableName"= value; }
            
get
            
{
                
if (ViewState["TableName"== null)
                
{
                    
if ((base.Site != null&& base.Site.DesignMode)
                    
{
                        
return "TableName";
                    }

                    
else
                    
{
                        CommandClass.MsgBox(
"没有设置TableName属性!"true);
                        
return null;
                    }

                }

                
else return ViewState["TableName"].ToString(); }
            }

        }

        
#endregion


        
表的主键#region 表的主键
        
/**//// <summary>
        
/// 表的主键
        
/// </summary>

        [Bindable(true)]
        [Category(
"SQL语句")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string TableIDColumns
        
{
            
set { ViewState["TableIDColumns"= value; }
            
get
            
{
                
if (ViewState["TableIDColumns"== null)
                
{
                    
if ((base.Site != null&& base.Site.DesignMode)
                    
{
                        
return "TableIDColumns";
                    }

                    
else
                    
{
                        CommandClass.MsgBox(
"没有设置TableIDColumns属性!"true);
                        
return null;

                    }

                }

                
else return ViewState["TableIDColumns"].ToString(); }
            }

        }

        
#endregion


        
显示的字段#region 显示的字段
        
/**//// <summary>
        
/// 显示的字段
        
/// </summary>

        [Bindable(true)]
        [Category(
"SQL语句")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string TableShowColumns
        
{
            
set { ViewState["TableShowColumns"= value; }
            
get
            
{
                
if (ViewState["TableShowColumns"== nullreturn "*"; }
                
else return ViewState["TableShowColumns"].ToString(); }
            }

        }

        
#endregion


        
排序字段#region 排序字段
        
/**//// <summary>
        
/// 排序字段
        
/// </summary>

        [Bindable(true)]
        [Category(
"SQL语句")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string TableOrderColumns
        
{
            
set { ViewState["TableOrderColumns"= value; }
            
get
            
{
                
if (ViewState["TableOrderColumns"== null)
                
{
                    
if ((base.Site != null&& base.Site.DesignMode)
                    
{
                        
return "TableOrderColumns";
                    }

                    
else
                    
{
                        CommandClass.MsgBox(
"没有设置TableOrderColumns属性!"true);
                        
return null;
                    }

                }

                
else return ViewState["TableOrderColumns"].ToString(); }
            }

        }

        
        
#endregion


        
查询条件#region 查询条件
        
/**//// <summary>
        
/// 查询条件
        
/// </summary>

        [Bindable(true)]
        [Category(
"SQL语句")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string TableQuery
        
{
            
set { ViewState["TableQuery"= value; }
            
get
            
{
                
if (ViewState["TableQuery"== null)
                    
return "";
                
else
                    
return ViewState["TableQuery"].ToString();
            }

        }

        
        
#endregion

        
#endregion


        
//SQL模版
        分页算法模版#region 分页算法模版
        
/**//// <summary>
        
/// 第一页的分页算法模版
        
/// </summary>

        [Bindable(true)]
        [Category(
"SQL语句模版")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string SQLGetFirstPage
        
{
            
set {  ViewState["FirstPageSQL"= value;  }
            
get
            
{
                
return ViewState["FirstPageSQL"== null ? null : ViewState["FirstPageSQL"].ToString();
            }

        }

        
#endregion


        
指定页号的分页算法模版#region 指定页号的分页算法模版
        
/**//// <summary>
        
/// 指定页号的分页算法模版
        
/// </summary>

        [Bindable(true)]
        [Category(
"SQL语句模版")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string SQLGetNextPage
        
{
            
set
            
{
                ViewState[
"NextPageSQL"= value;
            }

            
get
            
{
                
return ViewState["NextPageSQL"]==null?null:ViewState["NextPageSQL"].ToString();
            }

        }

        
#endregion


        
指定页号的分页算法模版#region 指定页号的分页算法模版
        
/**//// <summary>
        
/// 最后一页的分页算法模版
        
/// </summary>

        [Bindable(true)]
        [Category(
"SQL语句模版")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string SQLGetLastPage
        
{
            
set
            
{
                ViewState[
"LastPageSQL"= value;
            }

            
get
            
{
                
return ViewState["LastPageSQL"== null ? null : ViewState["LastPageSQL"].ToString();
            }

        }

        
#endregion


        
#endregion


        
//UI
        页面显示 上一页、下一页#region 页面显示 上一页、下一页

        
上一页#region 上一页
        
/**//// <summary>
        
/// 上一页
        
/// </summary>

        [Bindable(true)]
        [Category(
"页面显示")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string PageUIPrev
        
{
            
get return pPrevText; }
            
set { pPrevText = value; }
        }

        
#endregion


        
下一页#region 下一页
        
/**//// <summary>
        
/// 下一页
        
/// </summary>

        [Bindable(true)]
        [Category(
"页面显示")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string PageUINext
        
{
            
get return pNextText; }
            
set { pNextText = value; }
        }

        
#endregion


        
首页#region 首页
        
/**//// <summary>
        
/// 首页
        
/// </summary>

        [Bindable(true)]
        [Category(
"页面显示")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string PageUIFirst
        
{
            
get return pFirstText; }
            
set { pFirstText = value; }
        }

        
#endregion


        
末页#region 末页
        
/**//// <summary>
        
/// 末页
        
/// </summary>

        [Bindable(true)]
        [Category(
"页面显示")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string PageUILast
        
{
            
get return pLastText; }
            
set { pLastText = value; }
        }

        
#endregion


        
GO#region GO
        
/**//// <summary>
        
/// GO
        
/// </summary>

        [Bindable(true)]
        [Category(
"页面显示")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string PageUIGO
        
{
            
get return pGOText; }
            
set { pGOText = value; }
        }

        
#endregion


        
#endregion


        
页面导航的数量#region 页面导航的数量
        
/**//// <summary>
        
/// 
        
/// </summary>

        public Int32 NaviCount
        
{
            
set { ViewState["NaviCount"= value;  }
            
get
            
{
                
if (ViewState["NaviCount"== null)
                    
return 10;
                
else
                    
return (Int32)ViewState["NaviCount"];
            }

        }

        
#endregion


        
页面显示 记录数、页数#region 页面显示 记录数、页数

        
共{0}条记录数#region 共{0}条记录数
        
/**//// <summary>
        
/// 共{0}条记录数
        
/// </summary>

        [Bindable(true)]
        [Category(
"记录信息")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string PageUIAllCount
        
{
            
set { ViewState["PageUIAllCount"= value; }
            
get
            
{
                
if (ViewState["PageUIAllCount"== null)
                    
return "共<font style=\"color:Red;\">{0}</font>条记录数";
                
else
                    
return ViewState["PageUIAllCount"].ToString();
            }

        }

        
#endregion


        
第{0}/{1}页#region 第{0}/{1}页
        
/**//// <summary>
        
/// 第{0}/{1}页
        
/// </summary>

        [Bindable(true)]
        [Category(
"记录信息")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string PageUIAllPage
        
{
            
set { ViewState["PageUIAllPage"= value; }
            
get
            
{
                
if (ViewState["PageUIAllPage"== null)
                    
return "第<font style=\"color:Red;\">{0}</font>/<font style=\"color:Red;\">{1}</font>页";
                
else
                    
return ViewState["PageUIAllPage"].ToString();
            }

        }

        
#endregion


        
每页{0}条记录#region 每页{0}条记录
        
/**//// <summary>
        
/// 共{0}条记录数
        
/// </summary>

        [Bindable(true)]
        [Category(
"记录信息")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string PageUIAllPageCount
        
{
            
set { ViewState["PageUIAllPageCount"= value; }
            
get
            
{
                
if (ViewState["PageUIAllPageCount"== null)
                    
return "每页<font style=\"color:Red;\">{0}</font>条记录";
                
else
                    
return ViewState["PageUIAllPageCount"].ToString();
            }

        }

        
#endregion


        
#endregion


        
显示数据的控件的ID#region 显示数据的控件的ID
        
/**//// <summary>
        
/// 共{0}条记录数
        
/// </summary>

        [Bindable(true)]
        [Category(
"显示数据的控件ID")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public string ControlGridID
        
{
            
set { ViewState["ControlGridID"= value; }
            
get
            
{
                
if (ViewState["ControlGridID"== null)
                    
return null;
                
else
                    
return ViewState["ControlGridID"].ToString();
            }

        }

        
#endregion



        
数据访问实例的设置#region 数据访问实例的设置
        
/**//// <summary>
        
/// 设置数据访问层的实例
        
/// </summary>

        public DataAccessHelp DAL
        
{
            
set { dal = value; }
            
get
            
{
                
if (dal == null)
                    dal 
= new DataAccessHelp();

                
return dal;
            }

        }

        
#endregion


        
管理部分#region 管理部分
        
/**//// <summary>
        
/// 提取数据的实例
        
/// </summary>

        public PageManage.PageGetData ManagerGetData
        
{
            
set { MgrGetData = value; }
            
get
            
{
                PageManage.PageGetData tmp 
= MgrGetData;
                
if (tmp == null)
                
{
                    tmp 
= new JYK.Controls.PageManage.PageGetData();
                    MgrGetData 
= tmp;
                }


                
if (tmp.myPage == null)
                    tmp.myPage 
= this;

                
return tmp;
            }

        }


        
/**//// <summary>
        
/// 提取数据的实例
        
/// </summary>

        public PageManage.PageSQL ManagerPageSQL
        
{
            
set { MgrPageSQL = value; }
            
get
            
{
                PageManage.PageSQL tmp 
= MgrPageSQL;
                
if (tmp == null)
                
{
                    tmp 
= new JYK.Controls.PageManage.PageSQL();
                    MgrPageSQL 
= tmp;
                }


                
if (tmp.myPage == null)
                    tmp.myPage 
= this;

                
return tmp;
            }

        }


        
/**//// <summary>
        
/// 提取数据的实例
        
/// </summary>

        public PageManage.PageUI ManagerPageUI
        
{
            
set { MgrPageUI = value; }
            
get
            
{
                PageManage.PageUI tmp 
= MgrPageUI;
                
if (tmp == null)
                
{
                    tmp 
= new JYK.Controls.PageManage.PageUI();
                    MgrPageUI 
= tmp;
                }


                
if (tmp.myPage == null)
                    tmp.myPage 
= this;

                
return tmp;
            }

        }

        
#endregion


        
#endregion


        
函数#region 函数
        
/**//// <summary>
        
/// 显示第一页的数据
        
/// </summary>

        public void BindFirstPage()
        
{
            
//生成SQL语句和获取记录总数
            this.ManagerPageSQL.CreateSQL();
            
//绑定第一页的数据
            myDataBind(1);
        }

        
#endregion


        
绘制UI CreateChildControls()#region 绘制UI CreateChildControls()
        
/**//// <summary>
        
/// 绘制UI
        
/// </summary>

        protected override void CreateChildControls()
        
{
            
base.CreateChildControls();

            LinkButton btn 
= new LinkButton();
            btn.ID 
= "Page_Button";
            btn.Text 
= "";//所有的回发事件
            
//btn.Click += new EventHandler(btn_Click);   //添加事件
            this.Controls.Add(btn);

            ManagerPageUI.AddPageUI();  
//添加页面显示

            Page_Click();   
//调用分页事件
        }

        
#endregion


        
响应分页事件#region 响应分页事件
        
/**//// <summary>
        
/// 响应分页事件
        
/// </summary>

        private void Page_Click()
        
{
            
//string a = base.Page.Request.Form["__EVENTTARGET"];
            string PageIndex = base.Page.Request.Form["__EVENTARGUMENT"];

            
if (!Functions.IsInt(PageIndex))
                
return;
            
else
                myDataBind(Int32.Parse(PageIndex));
        }


        
/**//// <summary>
        
/// 绑定控件
        
/// </summary>

        private void myDataBind(Int32 PageIndex)
        
{
            
if (ControlGrid == null)
            
{
                
string CID = this.ControlGridID;
                
if (CID == null)
                    
return;
                
else
                    ControlGrid 
= (WebControl)base.Page.FindControl(CID);
            }


            Int32 NoCount 
= this.NaviCount; //一组页号的数量

            
bool isNavi = false;
            Int32 tmpPageIndex 
= this.PageIndex;

            
switch (PageIndex)
            
{
                
case 1:   //首页
                    isNavi = true;
                    
break;

                
case -3:
                    
//上一页
                    PageIndex = this.PageIndex - 1;
                    
break;

                
case -2:
                    
//下一页
                    PageIndex = this.PageIndex + 1;
                    
if (PageIndex % NoCount == 1)
                        isNavi 
= true;

                    
break;

                
case -99:   //前导
                    if (tmpPageIndex % NoCount == 0)
                        PageIndex 
= tmpPageIndex - NoCount;
                    
else
                        PageIndex 
= tmpPageIndex / NoCount * NoCount;

                    isNavi 
= true;
                    
break;

                
case -88:   //后导
                    if (tmpPageIndex % NoCount == 0)
                        PageIndex 
= tmpPageIndex + NoCount;
                    
else 
                        PageIndex 
= (this.PageIndex / NoCount + 1* NoCount + 1;

                    isNavi 
= true;
                    
break;

                

                
default:
                    isNavi 
= false ;
                    
break;
            }


            
if (PageIndex == this.PageCount)
                isNavi 
= true;  //末页
                    
            
this.PageIndex = PageIndex;

            
//获取记录集
            DataTable dt = this.ManagerGetData.GetDataTable(PageIndex);
            
//通过(好像是反射)来设置 DataSource属性。
            Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet(ControlGrid, null"datasource"new object[] { dt }nullnull);
            ControlGrid.DataBind();

            
//重新显示当前页号
            this.ManagerPageUI.UpdatePageIndex();

            
//重新显示页号当航
            if (isNavi)
                
this.ManagerPageUI.ReloadPageNavi();
            
else         
                
this.ManagerPageUI.UpdatePageNavi();
            
//base.Page.Response.Write(a + "+" + PageIndex);
        }

        
#endregion


        
/**//// <summary>
        
/// 接收分页控件的回发事件
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        void btn_Click(object sender, EventArgs e)
        
{
            
//throw new NotImplementedException();
            
//base.Page.Response.Write("ss");

        }


        
/**//// <summary>
        
/// 分页的回发事件,没有成功
        
/// </summary>
        
/// <param name="PageIndex"></param>

        public void RaisePostBackEvent(string PageIndex)
        
{
            
//base.Page.Response.Write("www");
            
//Page_Click();
        }



        
设计时支持#region 设计时支持
        
/**//// <summary>
        
/// 设计时支持
        
/// </summary>
        
/// <param name="output"></param>

        protected override void Render(HtmlTextWriter output)
        
{
            
if ((base.Site != null&& base.Site.DesignMode)
            
{
                output.Write(
"<div style='TEXT-ALIGN: center;width:100%'>第1/100页 &nbsp;&nbsp; 首页&nbsp;&nbsp;上一页&nbsp;&nbsp;[1][2][3] &nbsp;&nbsp; 下一页 &nbsp;&nbsp; 末页 &nbsp;&nbsp; 共1000条记录</div>");
            }

            
else
            
{
                
//Page_Click();
                output.Write("<div id='" + this.ClientID + "Page' style='TEXT-ALIGN: center;width:90%'>");
                
base.Render(output);
                output.Write(
"</div>");
            }


        }

        
#endregion


    }

}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
mybatis学习(14):log4j:ERROR Category option “ 1 “ not a decimal integer.
mybatis学习(14):log4j:ERROR Category option “ 1 “ not a decimal integer.
28 0
UDP Socket低层次网络编程
UDP(用户数据报协议)就像日常生活中的邮件投递,是不能保证可靠地寄到目的地。UDP是无连接 的,对系统资源的要求较少,UDP可能丢包不保证数据顺序。但是对于网络游戏和在线视频等要求传 输快、实时性高、质量可稍差一点的数据传输,UDP还是非常不错的。 UDP Socket网络编程比TCP Socket编程简单多,UDP是无连接协议,不需要像TCP一样监听端口,建 立连接,然后才能进行通信。
38 0
opengauss 《Industrial-Strength OLTP Using Main Memory and Many Cores》
Industrial-Strength OLTP Using Main Memory and Many Cores
138 0
Ubuntu下 Hadoop 1.2.1 配置安装 - 大T的专栏 - 博客频道 - CSDN.NE
来源:http://blog.csdn.net/wyswlp/article/details/10564847#1536434-hi-1-56806-42d97150898b1af15ddaae52f91f09c2
650 0
【自然框架】QuickPager asp.net 分页控件的Ajax分页方式。
  上次比较匆忙,Ajax的分页方式仅实现了基本功能,或者说只是验证了我的想法。现在对Ajax分页有做了一些调整,现在可以正式用了。     使用方法还是非常简单,可以完全按照URL分页方式来做,只需要把PagerTurnKind 属性 设置为:PagerTurnKind.AjaxForWebControl;就可以了。
1059 0
【开源】QuickPager ASP.NET2.0分页控件V2.0.0.6 修改了几个小bug,使用演示。
     由于项目里面还在使用vs2003,还没有使用新的分页控件,所以对新的分页控件的测试还很不到位,遗留了不少的bug,感谢网友试用提出宝贵意见。由于项目正在收尾中,时间也不是太充裕,所以使用说明也不够详细。
843 0
【自然框架】QuickPagerSQL——专门生成分页用的SQL的类库
分享一个生成分页用SQL的函数库     一般一提到分页,大家就会想到存储过程,而大多数情况都是在存储过程里面拼接SQL,我觉得与其在存储过程里面拼接,还不如写个程序来拼接。这样更便于维护,而且效率也不差多少。
729 0
+关注
金色海洋
算法相关技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载