zoukankan      html  css  js  c++  java
  • asp.net 分页控件

    前台

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Pager.ascx.cs" Inherits="Controls_Core_Pager" %>
    <style type="text/css">
    
        .GridViewPagerStyle {
            background-position: top;
            background-repeat: repeat-x;
            border-bottom: 1px solid #ABC7EC;
            color: #15428B;
            font-weight: bold;
        }
    
        .GridViewPagerStyle table {
            margin: auto;
            text-align: center;
        }
    
        .GridViewPagerStyle table td { border: 0px; }
    
        .GridViewPagerStyle a {
            color: #15428B;
            padding: 0px 1px 0px 1px;
            text-decoration: none;
        }
    
        .GridViewPagerStyle span {
            color: red;
            font-weight: bold;
            padding: 0px 1px 0px 1px;
            text-decoration: none;
        }
    </style>
    
    <script type="text/javascript" language="javascript">
        function checkGo() {
            var txtGoObj = document.getElementById(document.getElementById('hidTextBoxGoClientID').value);
    
            if (txtGoObj && txtGoObj.value == '') {
                txtGoObj.focus();
                return false;
            }
    
            return true;
        }
    </script>
    
    <center>
        <div style="background-color: #BBD5EC;  100%;">
            <table class="GridViewPagerStyle" cellpadding="1" cellspacing="1" >
                <tr align="center">
                    <td valign="middle" runat="server" id="tdAll" style="display: none;">
                        <asp:LinkButton ID="imgAll" Text="显示所有" runat="server" OnClick="All_Click" />  |
                    </td>
                    <td valign="middle" runat="server" id="tdPageCount">
                        共<asp:Label ID="lblPageCount" runat="server" Text="Label" Style="color: Red;"></asp:Label>页/<asp:Label
                                                                                                                        ID="lblRecordCount" runat="server" Text="Label" Style="color: Red;"></asp:Label>条记录  |
                    </td>
                    <td valign="middle" runat="server" id="tdCurrentIndex">
                        当前第<asp:Label ID="lblCurrentPageIndex" runat="server" Text="Label" Style="color: Red;"></asp:Label>页
                    </td>
                    <td valign="middle">
                        <asp:LinkButton ID="imgFirstPage" runat="server" OnClick="imgFirstPage_Click" Text="首页"></asp:LinkButton>
                    </td>
                    <td valign="middle">
                        <asp:LinkButton ID="imgPrePage" runat="server" OnClick="imgPrePage_Click" Text="上页"></asp:LinkButton>
                    </td>
                    <td valign="middle">
                        <asp:LinkButton ID="imgNextPage" runat="server" OnClick="imgNextPage_Click" Text="下页"></asp:LinkButton>
                    </td>
                    <td valign="middle">
                        <asp:LinkButton ID="imgLastPage" runat="server" OnClick="imgLastPage_Click" Text="尾页"></asp:LinkButton>
                    </td>
                    <td>
                    </td>
                    <td valign="middle" runat="server" id="tdTextGo">
                        转到<asp:TextBox ID="txtGo" runat="server" Width="20px" Height="12" onkeyup="this.value=this.value.replace(/D/g,'')"
                                       onafterpaste="this.value=this.value.replace(/D/g,'')"></asp:TextBox>页
                    </td>
                    <td valign="middle" runat="server" id="tdImgGo" align="center">
                        <asp:ImageButton ID="imgGo" AlternateText="跳转页面" ImageUrl="../../Images/Go.gif" OnClick="imgGo_Click"
                                         ImageAlign="Middle" runat="server" Height="21px" Width="28px" OnClientClick=" return checkGo(); " />
                    </td>
                </tr>
            </table>
        </div>
    </center>
    <asp:HiddenField ID="hidCurrentPageIndex" runat="server" />
    <asp:HiddenField ID="hidPageSize" runat="server" />
    

     后台:

    public partial class Controls_Core_Pager : System.Web.UI.UserControl
    {
        public delegate void GridViewDelegate();
    
        #region Delegate
    
        public event GridViewDelegate InitLoadData;
        public event GridViewDelegate PageingLoadData;
        public event GridViewDelegate BeforePageing;
        public event GridViewDelegate AfterPageing;
    
        private const string firstenabledimgurl = "~/Image/pager/first.gif";
        private const string firstdisabledimgurl = "~/image/pager/first_disabled.gif";
    
        private const string lastenabledimgurl = "~/image/pager/last.gif";
        private const string lastdisabledimgurl = "~/image/pager/last_disabled.gif";
    
        private const string prevenabledimgurl = "~/image/pager/prev.gif";
        private const string prevdisabledimgurl = "~/image/pager/prev_disabled.gif";
    
        private const string nextenabledimgurl = "~/image/pager/next.gif";
        private const string nextdisabledimgurl = "~/image/pager/next_disabled.gif";
        #endregion
    
        public bool SimplePager
        {
            set
            {
                this.tdAll.Visible = !value;
                this.tdCurrentIndex.Visible = !value;
                this.tdImgGo.Visible = !value;
                this.tdPageCount.Visible = !value;
                this.tdTextGo.Visible = !value;
            }
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        public int RecordCount
        {
            get { return (ViewState["RecordCount"] != null) ? (int)ViewState["RecordCount"] : 0; }
            set { ViewState["RecordCount"] = value; }
        }
    
        public int PageSize
        {
            get
            {
                if (string.IsNullOrEmpty(hidPageSize.Value) ||Convert.ToInt32( hidPageSize.Value)<=0)
                    hidPageSize.Value = "20";
                return int.Parse(hidPageSize.Value);
            }
            set
            {
                hidPageSize.Value = value.ToString();
            }
        }
    
        public int CurrentPageIndex
        {
            get { return (hidCurrentPageIndex.Value == string.Empty) ? 0 : int.Parse(hidCurrentPageIndex.Value); }
            set { hidCurrentPageIndex.Value = value.ToString(); }
        }
    
        public void LoadData()
        {
            if (InitLoadData != null)
            {
                InitLoadData();
                ShowStatus(0);
            }
        }
    
        public void ReLoadData()
        {
            if (BeforePageing != null)
            {
                BeforePageing();
            }
            if (PageingLoadData != null)
            {
                PageingLoadData();
                ShowStatus(CurrentPageIndex);
            }
            if (AfterPageing != null)
            {
                AfterPageing();
            }
        }
    
        private void ShowStatus(int currentPageIndex)
        {
            int pageCount = Convert.ToInt32((RecordCount - 1) / PageSize + 1);
            lblRecordCount.Text = RecordCount.ToString();
            hidCurrentPageIndex.Value = currentPageIndex.ToString();
            if (RecordCount == 0)
            {
                lblPageCount.Text = "0";
                lblCurrentPageIndex.Text = "";
            }
            else
            {
                lblPageCount.Text = pageCount.ToString();
                lblCurrentPageIndex.Text = Convert.ToString(currentPageIndex + 1);
            }
    
            if (pageCount == 0 || ((currentPageIndex + 1) == 1 && pageCount == 1))
            {
                imgFirstPage.Enabled = false;
                imgPrePage.Enabled = false;
                imgNextPage.Enabled = false;
                imgLastPage.Enabled = false;
            }
            else
            {
                if (currentPageIndex == 0)
                {
                    imgPrePage.Enabled = false;
                    imgFirstPage.Enabled = false;
                    imgNextPage.Enabled = true;
                    imgLastPage.Enabled = true;
                }
                else if ((currentPageIndex + 1) == pageCount)
                {
                    imgFirstPage.Enabled = true;
                    imgPrePage.Enabled = true;
                    imgNextPage.Enabled = false;
                    imgLastPage.Enabled = false;
                }
                else if (currentPageIndex != 0 && (currentPageIndex + 1) != pageCount)
                {
                    imgFirstPage.Enabled = true;
                    imgPrePage.Enabled = true;
                    imgNextPage.Enabled = true;
                    imgLastPage.Enabled = true;
                }
            }
        }
    
        protected void imgFirstPage_Click(object sender, EventArgs e)
        {
            if (BeforePageing != null)
            {
                BeforePageing();
            }
            if (PageingLoadData != null)
            {
                CurrentPageIndex = 0;
                PageingLoadData();
                ShowStatus(CurrentPageIndex);
            }
            if (AfterPageing != null)
            {
                AfterPageing();
            }
        }
    
        protected void imgPrePage_Click(object sender, EventArgs e)
        {
            if (BeforePageing != null)
            {
                BeforePageing();
            }
            if (PageingLoadData != null)
            {
                CurrentPageIndex = CurrentPageIndex - 1;
                PageingLoadData();
                ShowStatus(CurrentPageIndex);
            }
            if (AfterPageing != null)
            {
                AfterPageing();
            }
        }
    
        protected void imgNextPage_Click(object sender, EventArgs e)
        {
            if (BeforePageing != null)
            {
                BeforePageing();
            }
            if (PageingLoadData != null)
            {
                CurrentPageIndex = CurrentPageIndex + 1;
                PageingLoadData();
                ShowStatus(CurrentPageIndex);
            }
            if (AfterPageing != null)
            {
                AfterPageing();
            }
        }
    
        protected void imgLastPage_Click(object sender, EventArgs e)
        {
            if (BeforePageing != null)
            {
                BeforePageing();
            }
            if (PageingLoadData != null)
            {
                CurrentPageIndex = Convert.ToInt32((RecordCount - 1) / PageSize + 1) - 1;
                PageingLoadData();
                ShowStatus(CurrentPageIndex);
            }
            if (AfterPageing != null)
            {
                AfterPageing();
            }
        }
    
        public void All_Click(object sender, EventArgs e)
        {
            if (BeforePageing != null)
            {
                BeforePageing();
            }
            if (PageingLoadData != null)
            {
                CurrentPageIndex = 0;
                if (RecordCount > 0)
                    PageSize = Convert.ToInt32(RecordCount);
                PageingLoadData();
                ShowStatus(CurrentPageIndex);
            }
            if (AfterPageing != null)
            {
                AfterPageing();
            }
        }
    
        protected void imgGo_Click(object sender, EventArgs e)
        {
            if (BeforePageing != null)
            {
                BeforePageing();
            }
            if (PageingLoadData != null)
            {
                int pageCount = Convert.ToInt32((RecordCount - 1) / PageSize + 1);
                int goPageIndex= ConvertToInt(this.txtGo.Text.Trim());
    
                if (pageCount >= goPageIndex)
                {
                    CurrentPageIndex = goPageIndex - 1;
                    PageingLoadData();
                    ShowStatus(CurrentPageIndex);
                }
            }
            if (AfterPageing != null)
            {
                AfterPageing();
            }
        }
        private int ConvertToInt(string p)
        {
            int refvalue = 0;
            try
            {
                refvalue = int.Parse(p);
            }
            catch (Exception)
            {
            }
            return refvalue;
        }
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
    
            this.Page.ClientScript.RegisterHiddenField("hidTextBoxGoClientID", this.txtGo.ClientID);
        }
    
    }
    

     测试页面前台代码:

     <div>
                <asp:GridView ID="GridView1" CssClass="GridViewStyle" runat="server" BorderWidth="0px"
                    CellPadding="0" AutoGenerateColumns="False" Width="100%" AllowSorting="True"
                    EmptyDataText="暂无数据">
                    <FooterStyle CssClass="GridViewFooterStyle" />
                    <RowStyle CssClass="GridViewRowStyle" BackColor="#F7FAFD" />
                    <Columns>
                        <asp:BoundField DataField="ID" HeaderText="ID">
                            <FooterStyle CssClass="hide" />
                            <HeaderStyle CssClass="hide" />
                            <ItemStyle CssClass="hide" />
                        </asp:BoundField>
                        <asp:TemplateField HeaderText="序号">
                            <ItemTemplate>
                               
                                <%#Container.DataItemIndex+1%>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField HeaderText="ID" DataField="ID" />
                        <asp:BoundField HeaderText="PID" DataField="PID" />
                        <asp:BoundField HeaderText="name" DataField="name" />
                        <asp:BoundField HeaderText="开挖面积" DataField="GROUPNAME" />
    
               
                    </Columns>
          
                    <HeaderStyle CssClass="GridViewHeaderStyle" HorizontalAlign="Left" />
                    <AlternatingRowStyle BackColor="#EBF4FA" />
                </asp:GridView>
                <div style="text-align: center;">
                    <center>
                        <crc:Pager runat="server" ID="uxPager" OnInitLoadData="uxPager_InitLoadData" OnPageingLoadData="uxPager_PageingLoadData" />
                    </center>
                </div>
            </div>
    

    测试页面后台代码;

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridProject("select * from student");
            }
          
        }
    
        private void BindGridProject(string sql)
        {
            ViewState["sql"] = sql;
            this.uxPager.PageSize = Convert.ToInt32(ConfigurationManager.AppSettings["PageSize"]);
            this.uxPager.LoadData();
    
        }
        #region 分页相关
        /// <summary>
        /// 初始化分页控件
        /// </summary>
        protected void uxPager_InitLoadData()
        {
            int totalRecords = -1;
            DataTable table = QueryTable(this.uxPager.CurrentPageIndex, this.uxPager.PageSize, ref totalRecords);
            this.uxPager.RecordCount = totalRecords;
            LoadGridView(table);
        }
    
        /// <summary>
        /// 加载分页控件
        /// </summary>
        protected void uxPager_PageingLoadData()
        {
            int totalRecord = this.uxPager.RecordCount;
            DataTable table = QueryTable(this.uxPager.CurrentPageIndex, this.uxPager.PageSize, ref totalRecord);
            LoadGridView(table);
        }
        /// <summary>
        /// 获取数据源
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="totalRecord">总页数</param>
        /// <returns></returns>
        public DataTable QueryTable(int pageIndex, int pageSize, ref int totalRecord)
        {
            OracleDataBase odb = new OracleDataBase("0");
            string sql = ViewState["sql"].ToString();
            totalRecord = odb.GetDataSet(sql).Tables[0].Rows.Count;
            string sqlTableName = sql;
            string selectSql = StructurePagingSql(sqlTableName, pageIndex, pageSize, null);
            return odb.GetDataSet(selectSql).Tables[0];
        }
    
        /// <summary>
        /// 分页语句
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="orderBy">排序</param>
        /// <returns></returns>
        public String StructurePagingSql(string sqlTableName, int pageIndex, int pageSize, string orderBy)
        {
            int startIndex = pageIndex * pageSize;
            int endIndex = startIndex + pageSize;
            StringBuilder selectSql = new StringBuilder();
            selectSql.Append(string.Format(" SELECT *  FROM (SELECT A.*, ROWNUM RN FROM ({0}) A   ", sqlTableName));
            selectSql.Append(string.Format(" WHERE  ROWNUM <= {0} ) WHERE RN > {1} ", endIndex, startIndex));
            return selectSql.ToString();
        }
        private void LoadGridView(DataTable dt)
        {
            this.GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        #endregion
    
  • 相关阅读:
    最大熵原理
    python单引号、双引号和三双引号的区别
    python的字典
    hadoop jar xxxx.jar 执行的流程
    java 正则表达式
    secureCRT中vim个性化设置
    python关系运算符的全称
    C# 分割字符
    委托(delegate)
    在C#中,委托(delegate)
  • 原文地址:https://www.cnblogs.com/qishiguilai/p/3899731.html
Copyright © 2011-2022 走看看