WebPager.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebPager.ascx.cs" Inherits="User_Crl_WebUserControl" %>
<script language="javascript"> 
 function callButtonEvent()
 {
  var keycode =window.event.keyCode;
  if(keycode==13)
  {
   if(check()==true)
   {
    event.cancelBubble=true;
    event.returnValue=false;
    document.getElementById('<%=btnGo.ClientID%>').click();
   }
  }
 }
 function check()
 {
  var count =  parseInt(document.getElementById('<%=lblTotal.ClientID%>').outerText);
  var txt = document.getElementById('<%=txtCurrentPage.ClientID%>').value;
  var cur = parseInt(txt);
  if ((cur | NaN) ==0)
  {
   alert('Input page must format as integer.');   
   event.cancelPostBack=true;   
   return false;
  }
  if (cur > count || cur < 1)
  {
   alert('Input page no out of range.');   
   event.cancelPostBack=true;
   return false;
  }
 }
</script>

<TABLE ID="Table1" CELLSPACING="0" CELLPADDING="0" WIDTH="100%" BORDER="0">
 <colgroup>
  <col width="50">
  <col width="50">
  <col width="40">
  <col width="20">
  <col width="40">
  <col width="40">
  <col width="50">
  <col width="70">
  <col width="400">
 </colgroup>
 <TR align="left">
  <TD><asp:LinkButton id="btnFirstPage" runat="server" CommandArgument="First">第一页</asp:LinkButton></TD>
  <TD><asp:LinkButton id="btnPrevPage" runat="server" CommandArgument="Prev">上一页</asp:LinkButton></TD>
  <TD><ASP:TEXTBOX ID="txtCurrentPage" RUNAT="server" MAXLENGTH="3" Width="40">0</ASP:TEXTBOX></TD>
  <TD><ASP:LABEL ID="labOf" RUNAT="server">of</ASP:LABEL></TD>
  <TD><ASP:LABEL ID="lblTotal" RUNAT="server">0</ASP:LABEL></TD>
  <TD><ASP:BUTTON ID="btnGo" RUNAT="server" TEXT="转到" COMMANDARGUMENT="Go" ToolTip="转到"></ASP:BUTTON></TD>
  <TD><asp:LinkButton id="btnNextPage" runat="server" CommandArgument="Next">下一页</asp:LinkButton></TD>
  <TD><asp:LinkButton id="btnLastPage" runat="server" CommandArgument="Last">最后一页</asp:LinkButton></TD>
  <td></td>
 </TR>
</TABLE>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class User_Crl_WebUserControl : System.Web.UI.UserControl
{
    int size = 10;//可以在web.config中配置
    public event System.EventHandler NavigationClick;
    protected void Page_Load(object sender, EventArgs e)
    {
        this.txtCurrentPage.Attributes.Add("onkeypress", "callButtonEvent();");
        this.btnGo.Attributes.Add("onclick", "check();");
        if (!this.IsPostBack)
        {
            SetStyle();
            SetEnable();
        }
    }
        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
            this.btnFirstPage.Click += new System.EventHandler(this.btnGo_Click);
            this.btnPrevPage.Click += new System.EventHandler(this.btnGo_Click);
            this.btnNextPage.Click += new System.EventHandler(this.btnGo_Click);
            this.btnLastPage.Click += new System.EventHandler(this.btnGo_Click);
            this.btnGo.Click += new System.EventHandler(this.btnGo_Click);
        }

        /// <summary>
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {

        }
        #endregion

        #region btnGo_Click
        private void btnGo_Click(object sender, System.EventArgs e)
        {
            LinkButton linkbtn = sender as LinkButton;
            if (null == linkbtn)//button
            {
                Button btn = sender as Button;
                if (null == btn)
                {
                    return;
                }
                else
                {
                    int selPage = -1;
                    try
                    {
                        selPage = Int32.Parse(txtCurrentPage.Text);
                    }
                    catch
                    {
                        selPage = -1;
                    }
                    if (selPage > 0 && selPage <= PageCount)
                    {
                        ViewState["CurrentPageIndex"] = selPage;
                    }
                    else
                    {
                        return;
                    }
                }
            }
            else//linkbutton
            {
                switch (linkbtn.CommandArgument.Trim())
                {
                    case "First":
                        ViewState["CurrentPageIndex"] = 1;
                        break;
                    case "Prev":
                        ViewState["CurrentPageIndex"] = (CurrentPageIndex > 1) ? CurrentPageIndex - 1 : 1;
                        break;
                    case "Next":
                        ViewState["CurrentPageIndex"] = (PageCount > CurrentPageIndex) ? CurrentPageIndex + 1 : PageCount;
                        break;
                    case "Last":
                        ViewState["CurrentPageIndex"] = PageCount;
                        break;
                    default:
                        break;
                }
            }
            SetEnable();//设置显示样式
            if (NavigationClick != null)//调用事件
            {
                NavigationClick(sender, e);
            }
        }
        #endregion

        #region SetStyle
        private void SetStyle()
        {
            this.btnFirstPage.Attributes["style"] = "CURSOR: hand";
            this.btnLastPage.Attributes["style"] = "CURSOR: hand";
            this.btnNextPage.Attributes["style"] = "CURSOR: hand";
            this.btnPrevPage.Attributes["style"] = "CURSOR: hand";
        }
        #endregion

        #region SetEnable
        // 应根据当前的CurrentPageIndex和pageCount设定哪些按钮可用  
        private void SetEnable()
        {
            this.lblTotal.Text = PageCount.ToString();

            txtCurrentPage.Text = CurrentPageIndex.ToString();

            btnPrevPage.Enabled = false;
            btnNextPage.Enabled = false;

            if (PageCount > 1)
            {
                btnFirstPage.Enabled = btnPrevPage.Enabled = (CurrentPageIndex > 1);
                btnNextPage.Enabled = btnLastPage.Enabled = (CurrentPageIndex < PageCount);
            }
            else
            {
                btnFirstPage.Enabled = false;
                btnLastPage.Enabled = false;
                btnPrevPage.Enabled = false;
                btnNextPage.Enabled = false;
            }
        }

        #endregion

        #region Property
        //获取或设置当前显示页的索引。    
        public int CurrentPageIndex
        {
            get
            {
                object cpage = ViewState["CurrentPageIndex"];
                int pindex = (cpage == null) ? 1 : (int)cpage;
                if (pindex > PageCount && PageCount > 0)
                    return PageCount;
                else if (pindex < 1)
                    return 1;
                return pindex;
            }
            set
            {
                int cpage = value;
                if (cpage < 1)
                    cpage = 1;
                else if (cpage > this.PageCount)
                    cpage = this.PageCount;
                ViewState["CurrentPageIndex"] = cpage;
            }
        }

        // 获取或设置需要分页的所有记录的总数。 
        public int RecordCount
        {
            get
            {
                object obj = ViewState["Recordcount"];
                return (obj == null) ? 0 : (int)obj;
            }
            set
            {
                ViewState["Recordcount"] = value;
                SetEnable();
            }
        }

        //获取当前页之后的页的总数。  
        public int PagesRemain
        {
            get
            {
                return PageCount - CurrentPageIndex;
            }
        }
        // 获取或设置每页显示的项数。   
        public int PageSize
        {
            get
            {
                object obj = ViewState["PageSize"];
                if (obj == null)
                {
                    obj = size;
                }
                return (obj == null) ? size : (int)obj;
            }
            set
            {
                int pageSize = value;

                if (Math.Abs(pageSize) == 0)
                    pageSize = size;

                ViewState["PageSize"] = pageSize;
            }
        }

        // 获取在当前页之后还未显示的剩余记录的项数。
        public int RecordsRemain
        {
            get
            {
                if (CurrentPageIndex < PageCount)
                {
                    return RecordCount - (CurrentPageIndex * PageSize);
                }
                else
                {
                    return 0;
                }
            }
        }

        // 获取所有要分页的记录需要的总页数。  
        public int PageCount
        {
            get { return (RecordCount > 0) ? (int)Math.Ceiling((double)RecordCount / (double)PageSize) : 1; }
        }

        //public int XRecord
        //{
        //    get
        //    {
        //        return int.Parse(System.Configuration.ConfigurationSettings.AppSettings["XRecord"].Trim());
        //    }
        //}
        #endregion Property
    }

 

你可能感兴趣的:(WebPager.ascx)