UserControlPage.ascx.cs
上传用户:tiancihang
上传日期:2014-03-12
资源大小:21387k
文件大小:8k
源码类别:

.net编程

开发平台:

C#

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. public partial class UserControl_UserControlPage : System.Web.UI.UserControl
  12. {
  13.     //protected System.Web.UI.WebControls.Label lblTotal;
  14.     //protected System.Web.UI.WebControls.Label labOf;
  15.     //protected System.Web.UI.WebControls.TextBox txtCurrentPage;
  16.     //protected System.Web.UI.WebControls.Button btnGo;
  17.     //protected System.Web.UI.WebControls.LinkButton btnFirstPage;
  18.     //protected System.Web.UI.WebControls.LinkButton btnPrevPage;
  19.     //protected System.Web.UI.WebControls.LinkButton btnNextPage;
  20.     //protected System.Web.UI.WebControls.LinkButton btnLastPage;
  21.     int size = 10;//可以在web.config中配置
  22.     public event System.EventHandler NavigationClick;
  23.     protected void Page_Load(object sender, EventArgs e)
  24.     {
  25.         this.txtCurrentPage.Attributes.Add("onkeypress", "callButtonEvent();");
  26.         this.btnGo.Attributes.Add("onclick", "check();");
  27.         if (!this.IsPostBack)
  28.         {
  29.             SetStyle();
  30.             SetEnable();
  31.         }
  32.     }
  33.     #region Web Form Designer generated code
  34.     override protected void OnInit(EventArgs e)
  35.     {
  36.         //
  37.         // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  38.         //
  39.         InitializeComponent();
  40.         base.OnInit(e);
  41.         this.btnFirstPage.Click += new System.EventHandler(this.btnGo_Click);
  42.         this.btnPrevPage.Click += new System.EventHandler(this.btnGo_Click);
  43.         this.btnNextPage.Click += new System.EventHandler(this.btnGo_Click);
  44.         this.btnLastPage.Click += new System.EventHandler(this.btnGo_Click);
  45.         this.btnGo.Click += new System.EventHandler(this.btnGo_Click);
  46.     }
  47.     /// <summary>
  48.     ///        Required method for Designer support - do not modify
  49.     ///        the contents of this method with the code editor.
  50.     /// </summary>
  51.     private void InitializeComponent()
  52.     {
  53.         this.Load += new System.EventHandler(this.Page_Load);
  54.     }
  55.     #endregion
  56.     #region btnGo_Click
  57.     private void btnGo_Click(object sender, System.EventArgs e)
  58.     {
  59.         LinkButton linkbtn = sender as LinkButton;
  60.         if( null == linkbtn )//button
  61.         {
  62.             Button btn = sender as Button;
  63.             if( null == btn )
  64.             {
  65.                 return;
  66.             }
  67.             else
  68.             {
  69.                 int selPage = -1;
  70.                 try
  71.                 {
  72.                     selPage =Int32.Parse(txtCurrentPage.Text);
  73.                 }
  74.                 catch
  75.                 {
  76.                     selPage = -1;
  77.                 }
  78.                 if (selPage > 0 && selPage <= PageCount)
  79.                 {
  80.                     ViewState["CurrentPageIndex"]  = selPage;
  81.                 }
  82.                 else
  83.                 {
  84.                     return;
  85.                 }
  86.             }
  87.         }
  88.         else//linkbutton
  89.         {
  90.             switch ( linkbtn.CommandArgument.Trim() )
  91.             {
  92.                 case "First":
  93.                     ViewState["CurrentPageIndex"] = 1;
  94.                     break;
  95.                 case "Prev":
  96.                     ViewState["CurrentPageIndex"] = (CurrentPageIndex > 1) ? CurrentPageIndex - 1 : 1;
  97.                     break;
  98.                 case "Next":
  99.                     ViewState["CurrentPageIndex"] = (PageCount > CurrentPageIndex) ? CurrentPageIndex + 1 : PageCount;
  100.                     break;
  101.                 case "Last":
  102.                     ViewState["CurrentPageIndex"]  = PageCount;
  103.                     break;
  104.                 case "Go":
  105.                     int selPage = -1;
  106.                     try
  107.                     {
  108.                         selPage = Int32.Parse(txtCurrentPage.Text);
  109.                     }
  110.                     catch
  111.                     {
  112.                         selPage = -1;
  113.                     }
  114.                     if (selPage > 0 && selPage <= PageCount)
  115.                     {
  116.                         ViewState["CurrentPageIndex"] = selPage;
  117.                     }
  118.                     else
  119.                     {
  120.                         return;
  121.                     }
  122.                     break;
  123.                 default:
  124.                     break;
  125.             }
  126.         }
  127.         SetEnable();//设置显示样式
  128.         if (NavigationClick!=null)//调用事件 
  129.         {
  130.             NavigationClick( sender,e );
  131.         }
  132.     }
  133.     #endregion
  134.     #region SetStyle
  135.     private void SetStyle()
  136.     {
  137.         this.btnFirstPage.Attributes["style"] = "CURSOR: hand";
  138.         this.btnLastPage.Attributes["style"] = "CURSOR: hand";
  139.         this.btnNextPage.Attributes["style"] = "CURSOR: hand";
  140.         this.btnPrevPage.Attributes["style"] = "CURSOR: hand";
  141.     }
  142.     #endregion
  143.     #region SetEnable
  144.     // 应根据当前的CurrentPageIndex和pageCount设定哪些按钮可用        
  145.     private void SetEnable()
  146.     {
  147.         this.ltTotal.Text = PageCount.ToString();
  148.         this.lbCurrent.Text = CurrentPageIndex.ToString();
  149.         
  150.         txtCurrentPage.Text =CurrentPageIndex.ToString();
  151.         
  152.         btnPrevPage.Enabled = false;
  153.         btnNextPage.Enabled = false;
  154.         
  155.         if( PageCount >1 )
  156.         {                    
  157.             btnFirstPage.Enabled = btnPrevPage.Enabled = ( CurrentPageIndex >1 );
  158.             btnNextPage.Enabled = btnLastPage.Enabled = ( CurrentPageIndex < PageCount );
  159.         }
  160.         else
  161.         {                
  162.             btnFirstPage.Enabled = false;
  163.             btnLastPage.Enabled = false;
  164.             btnPrevPage.Enabled = false;
  165.             btnNextPage.Enabled = false;
  166.         }
  167.     }
  168.     
  169.     #endregion
  170.     #region Property
  171.     //获取或设置当前显示页的索引。                
  172.     public int CurrentPageIndex
  173.     {
  174.         get
  175.         {
  176.             object cpage = ViewState["CurrentPageIndex"];
  177.             int pindex = (cpage == null) ? 1 : (int)cpage;
  178.             if (pindex > PageCount && PageCount > 0)
  179.                 return PageCount;
  180.             else if (pindex < 1)
  181.                 return 1;
  182.             return pindex;
  183.         }
  184.         set
  185.         {
  186.             int cpage = value;
  187.             if (cpage < 1)
  188.                 cpage = 1;
  189.             else if (cpage > this.PageCount)
  190.                 cpage = this.PageCount;
  191.             ViewState["CurrentPageIndex"] = cpage;
  192.         }
  193.     }
  194.     // 获取或设置需要分页的所有记录的总数。    
  195.     public int RecordCount
  196.     {
  197.         get
  198.         {
  199.             object obj = ViewState["Recordcount"];
  200.             return (obj == null) ? 0 : (int)obj;
  201.         }
  202.         set
  203.         {
  204.             ViewState["Recordcount"] = value;
  205.             SetEnable();
  206.         }
  207.     }
  208.     // 获取当前页之后的页的总数。        
  209.     public int PagesRemain
  210.     {
  211.         get
  212.         {
  213.             return PageCount - CurrentPageIndex;
  214.         }
  215.     }
  216.     // 获取或设置每页显示的项数。            
  217.     public int PageSize
  218.     {
  219.         get
  220.         {
  221.             object obj = ViewState["PageSize"];
  222.             if (obj == null)
  223.             {
  224.                 obj = size;
  225.             }
  226.             return (obj == null) ? size : (int)obj;
  227.         }
  228.         set
  229.         {
  230.             int pageSize = value;
  231.             if (Math.Abs(pageSize) == 0)
  232.                 pageSize = size;
  233.             ViewState["PageSize"] = pageSize;
  234.         }
  235.     }
  236.     // 获取在当前页之后还未显示的剩余记录的项数。
  237.     public int RecordsRemain
  238.     {
  239.         get
  240.         {
  241.             if (CurrentPageIndex < PageCount)
  242.             {
  243.                 return RecordCount - (CurrentPageIndex * PageSize);
  244.             }
  245.             else
  246.             {
  247.                 return 0;
  248.             }
  249.         }
  250.     }
  251.     // 获取所有要分页的记录需要的总页数。        
  252.     public int PageCount
  253.     {
  254.         get { return (RecordCount > 0) ? (int)Math.Ceiling((double)RecordCount / (double)PageSize) : 1; }
  255.     }
  256.     public int XRecord
  257.     {
  258.         get
  259.         {
  260.             return int.Parse(System.Configuration.ConfigurationSettings.AppSettings["XRecord"].Trim());
  261.         }
  262.     }
  263.     #endregion Property
  264. }