• 翻页控件示例代码


    using System;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;

    namespace Pagination
    {
        /// <summary>
        /// 分页控件
        /// </summary>
        public class PaginationControl : System.Web.UI.WebControls.WebControl
        {
            #region Fields
            private Button btnPreviousPage;
            private Button btnNextPage;
            private Label lblGo;
            private TextBox txtCurrentPage;
            private Button btnGo;
            private Label lblPageMessage;

            //事件
            public event System.EventHandler PreviousPageClick;
            public event System.EventHandler NextPageClick;
            public event System.EventHandler GoPageClick;

            private int _currentPage;
            #endregion

            #region Properties
            /// <summary>
            /// 控件Enabled属性
            /// </summary>
            public bool ControlEnabled
            {
                set
                {
                    this.btnPreviousPage.Enabled = value;
                    this.btnNextPage.Enabled = value;
                    this.txtCurrentPage.Enabled = value;
                    this.btnGo.Enabled = value;
                }
            }


            /// <summary>
            /// 当前页,只读
            /// </summary>
            public int CurrentPage
            {
                get
                {
                    string currentPage = lblPageMessage.Text.Trim();
                    return int.Parse(currentPage.Substring(currentPage.IndexOf("第") + 1, currentPage.IndexOf("页") - currentPage.IndexOf("第") - 1));
                }
            }


            /// <summary>
            /// 总页数,只读
            /// </summary>
            public int TotalPage
            {
                get
                {
                    string totalPage = lblPageMessage.Text.Trim();
                    return int.Parse(totalPage.Substring(totalPage.IndexOf("共") + 1, totalPage.LastIndexOf("页") - totalPage.IndexOf("共") - 1));
                }
            }
            #endregion

            #region Methods
            #region Override Methods
            protected override void OnInit(EventArgs e)
            {
                if (ChildControlsCreated)
                    return;
                else
                {
                    this.Height = 20;

                    if (btnPreviousPage == null)
                    {
                        btnPreviousPage = new Button();
                        btnPreviousPage.Text = "上页";
                        btnPreviousPage.BackColor = System.Drawing.Color.White;
                        btnPreviousPage.ForeColor = System.Drawing.Color.FromArgb(0, 51, 102);
                        btnPreviousPage.BorderStyle = BorderStyle.None;
                        btnPreviousPage.Height = 14;
                        Controls.Add(btnPreviousPage);
                    }

                    if (btnNextPage == null)
                    {
                        btnNextPage = new Button();
                        btnNextPage.Text = "下页";
                        btnNextPage.BackColor = System.Drawing.Color.White;
                        btnNextPage.ForeColor = System.Drawing.Color.FromArgb(0, 51, 102);
                        btnNextPage.BorderStyle = BorderStyle.None;
                        btnNextPage.Height = 14;
                        Controls.Add(btnNextPage);
                    }

                    if (lblGo == null)
                    {
                        lblGo = new Label();
                        lblGo.Text = "转到:";
                        lblGo.BackColor = System.Drawing.Color.White;
                        lblGo.ForeColor = System.Drawing.Color.FromArgb(0, 51, 102);
                        lblGo.CssClass = "wenzi";
                        Controls.Add(lblGo);
                    }

                    if (txtCurrentPage == null)
                    {
                        txtCurrentPage = new TextBox();
                        //     txtCurrentPage.Width = 35;
                        txtCurrentPage.BackColor = System.Drawing.Color.White;
                        txtCurrentPage.BorderColor = System.Drawing.Color.FromArgb(0, 51, 102);
                        txtCurrentPage.BorderWidth = 1;
                        txtCurrentPage.Width = 40;
                        txtCurrentPage.Height = 16;
                        txtCurrentPage.BorderStyle = BorderStyle.Solid;
                        txtCurrentPage.CssClass = "wenzi";
                        Controls.Add(txtCurrentPage);
                    }

                    if (btnGo == null)
                    {
                        btnGo = new Button();
                        btnGo.Text = "GO";
                        btnGo.BackColor = System.Drawing.Color.White;
                        btnGo.BorderColor = System.Drawing.Color.FromArgb(0, 51, 102);
                        btnGo.ForeColor = System.Drawing.Color.FromArgb(0, 51, 102);
                        btnGo.BorderWidth = 1;
                        btnGo.Height = 16;
                        btnGo.Font.Size = FontUnit.Point(9);
                        Controls.Add(btnGo);
                    }

                    if (lblPageMessage == null)
                    {
                        lblPageMessage = new Label();
                        lblPageMessage.Text = "第0页/共0页";
                        lblPageMessage.BackColor = System.Drawing.Color.White;
                        lblPageMessage.ForeColor = System.Drawing.Color.Black;
                        lblPageMessage.CssClass = "wenzi";
                        Controls.Add(lblPageMessage);
                    }

                    this.btnPreviousPage.Click += new System.EventHandler(PreviousPage_Click);
                    this.btnNextPage.Click += new System.EventHandler(NextPage_Click);
                    this.btnGo.Click += new System.EventHandler(GoPage_Click);

                    ChildControlsCreated = true;
                }
            }


            protected override HtmlTextWriterTag TagKey
            {
                get
                {
                    return HtmlTextWriterTag.Table;
                }
            }


            /// <summary>
            /// 将此控件呈现给指定的输出参数。
            /// </summary>
            /// <param name="output"> 要写出到的 HTML 编写器 </param>
            protected override void Render(HtmlTextWriter output)
            {
                output.RenderBeginTag(HtmlTextWriterTag.Table);
                output.RenderBeginTag(HtmlTextWriterTag.Tr);

                output.RenderBeginTag(HtmlTextWriterTag.Td);
                btnPreviousPage.RenderControl(output);
                btnNextPage.RenderControl(output);
                lblGo.RenderControl(output);
                txtCurrentPage.RenderControl(output);
                btnGo.RenderControl(output);
                lblPageMessage.RenderControl(output);
                output.RenderEndTag();//td的结束

                output.RenderEndTag();//tr的结束
                output.RenderEndTag();
            }
            #endregion

            #region
            /// <summary>
            /// 设置当前页数,并显示。
            /// </summary>
            /// <param name="currentPage">当前页码</param>
            /// <returns></returns>
            private void SetCurrentPage(int currentPage)
            {
                lblPageMessage.Text = lblPageMessage.Text.Remove(1, lblPageMessage.Text.IndexOf("页") - 1).Insert(1, currentPage.ToString());
                txtCurrentPage.Text = currentPage.ToString();
            }


            /// <summary>
            /// 计算总页数,并显示
            /// </summary>
            /// <param name="pageSize">每页记录数</param>
            /// <param name="totalRow">总记录数</param>
            /// <returns>总页数</returns>
            private int CalTotalPage(int pageSize, int totalRow)
            {
                int totalPage;

                if (pageSize <= 0)
                    totalPage = 0;
                else if (pageSize == 1)
                    totalPage = totalRow;
                else
                {
                    string page = Math.Floor(totalRow / pageSize).ToString();
                    if (totalRow % pageSize == 0)
                    {
                        totalPage = int.Parse(page);
                    }
                    else
                    {
                        totalPage = int.Parse(page) + 1;
                    }
                }

                lblPageMessage.Text = lblPageMessage.Text.Remove(lblPageMessage.Text.IndexOf("共") + 1, lblPageMessage.Text.LastIndexOf("页") - lblPageMessage.Text.IndexOf("共") - 1);
                lblPageMessage.Text = lblPageMessage.Text.Insert(lblPageMessage.Text.IndexOf("共") + 1, totalPage.ToString());

                return totalPage;
            }


            /// <summary>
            /// 计算起始行位置
            /// </summary>
            /// <param name="currentPage">当前页码</param>
            /// <param name="pageSize">每页记录数</param>
            /// <returns>起始行位置</returns>
            private int CalStartRow(int pageSize)
            {
                if (this.CurrentPage <= 1 || pageSize <= 0)
                    return 1;
                else
                    return (this.CurrentPage - 1) * pageSize;
            }


            /// <summary>
            /// 计算起始行位置
            /// </summary>
            /// <param name="currentPage">当前页码</param>
            /// <param name="pageSize">每页记录数</param>
            /// <returns>起始行位置</returns>
            private int CalStartRow(int currentPage, int pageSize)
            {
                if (currentPage <= 1 || pageSize <= 0)
                    return 1;
                else
                    return (currentPage - 1) * pageSize;
            }


            /// <summary>
            /// 格式化查询语句,以便查询分页(计算总行数)。
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public string FormatSql(string sql)
            {
                //查询语句中存在union,或者没有fRoM标记。
                if (sql.ToLower().IndexOf("union") >= 0 || sql.IndexOf("fRoM") < 0)
                {
                    sql = "select count(*) from (" + sql + ")";
                    return sql;
                }
                else
                {
                    return FormatSql(sql, "fRoM");
                }
            }


            /// <summary>
            /// 格式化查询语句,以便查询分页(计算总行数)。
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="searchString">查找字符串</param>
            /// <returns></returns>
            public string FormatSql(string sql, string searchString)
            {
                sql = sql.Remove(0, sql.IndexOf(searchString) + searchString.Length);
                sql = "select count(*) from" + sql;
                return sql;
            }


            /// <summary>
            /// 格式化查询语句,以便查询分页。
            /// 查询语句一定要有where关键字。
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="pageSize"></param>
            /// <param name="totalRow">总记录数</param>
            /// <param name="currentPage"></param>
            /// <returns></returns>
            public string FormatSql(string sql, int pageSize, int totalRow, int currentPage)
            {
                int totalPage = CalTotalPage(pageSize, totalRow);

                if (totalPage <= 1)
                    this.ControlEnabled = false;
                else
                    this.ControlEnabled = true;

                //设置当前页码
                SetCurrentPage(currentPage);

                //记录标志位置
                int markPosition = 0;

                //如果查询语句中使用union
                if (sql.ToLower().IndexOf("union") >= 0 || sql.IndexOf("fRoM") < 0)
                {
                    if (this.CurrentPage <= 1 || totalPage <= 1)
                    {
                        sql = "select * from (" + sql + ") where rownum <= " + pageSize.ToString();
                        return sql;
                    }
                    else
                    {
                        int startRow, endRow;

                        startRow = CalStartRow(pageSize);
                        endRow = startRow + pageSize;

                        sql = "select * from (select rownum rn,a.* from (" + sql + ") a where rownum <= " + endRow.ToString() + ") where rn > " + startRow.ToString();
                        return sql;
                    }
                }
                else
                {
                    if (this.CurrentPage <= 1 || totalPage <= 1)
                    {
                        markPosition = sql.IndexOf("wHerE");
                        sql = sql.Insert(markPosition + 5, " rownum <= " + pageSize.ToString() + " and");
                        return sql;
                    }
                    else
                    {
                        int startRow, endRow;

                        startRow = CalStartRow(pageSize);
                        endRow = startRow + pageSize;

                        markPosition = sql.IndexOf("fRoM");
                        sql = "select * from (" + sql.Insert(markPosition, ",rownum rn ");

                        markPosition = sql.IndexOf("wHerE");
                        sql = sql.Insert(markPosition + 5, " rownum <= " + endRow.ToString() + " and") + ") where rn > " + startRow.ToString();

                        return sql;
                    }
                }
            }


            /// <summary>
            /// 格式化查询语句,以便查询分页。
            /// 查询语句一定要有where关键字,当前页默认为1。
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="pageSize"></param>
            /// <param name="totalRow">总记录数</param>
            /// <returns></returns>
            public string FormatSql(string sql, int pageSize, int totalRow)
            {
                return FormatSql(sql, pageSize, totalRow, 1);
            }

            #endregion
            #endregion

            #region Events
            private void PreviousPage_Click(object sender, System.EventArgs e)
            {
                _currentPage = this.CurrentPage;
                if (_currentPage > 1)
                {
                    _currentPage -= 1;
                    lblPageMessage.Text = lblPageMessage.Text.Remove(1, lblPageMessage.Text.IndexOf("页") - 1).Insert(1, _currentPage.ToString());
                    txtCurrentPage.Text = _currentPage.ToString();
                }

                if (PreviousPageClick != null)
                {
                    PreviousPageClick(this, e);
                }
            }


            private void NextPage_Click(object sender, System.EventArgs e)
            {
                _currentPage = this.CurrentPage;
                if (_currentPage < this.TotalPage)
                {
                    _currentPage += 1;
                    lblPageMessage.Text = lblPageMessage.Text.Remove(1, lblPageMessage.Text.IndexOf("页") - 1).Insert(1, _currentPage.ToString());
                    txtCurrentPage.Text = _currentPage.ToString();
                }

                if (NextPageClick != null)
                {
                    NextPageClick(this, e);
                }
            }


            private void GoPage_Click(object sender, System.EventArgs e)
            {
                try
                {
                    _currentPage = int.Parse(txtCurrentPage.Text.Trim());
                    if (_currentPage <= 0 || _currentPage > this.TotalPage)
                        return;
                    else
                    {
                        lblPageMessage.Text = lblPageMessage.Text.Remove(1, lblPageMessage.Text.IndexOf("页") - 1).Insert(1, _currentPage.ToString());
                        txtCurrentPage.Text = _currentPage.ToString();
                    }
                }
                catch
                {
                    return;
                }
                if (GoPageClick != null)
                {
                    GoPageClick(this, e);
                }
            }
            #endregion
        }
    }

  • 相关阅读:
    BeanShell实现写入文件
    LoadRunner11录制APP脚本(2)
    LoadRunner11录制APP脚本(1)
    性能测试 研究方向
    JMeter录制脚本方式(二)
    JMeter常用字符串相关函数
    JMeter中BeanShell用法总结(一)
    第二篇:JMeter实现接口/性能自动化(JMeter/Ant/Jenkins)
    第一篇:JMeter实现接口/性能自动化(JMeter/Ant/Jenkins)
    JMeter设置集合点
  • 原文地址:https://www.cnblogs.com/fhuafeng/p/1769573.html
Copyright © 2020-2023  润新知