<del id="nnjnj"></del><track id="nnjnj"></track>

<p id="nnjnj"></p>

<address id="nnjnj"></address>

    <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

      <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>

      • 自動秒收錄
      • 軟件:1974
      • 資訊:4527|
      • 收錄網站:301505|

      IT精英團

      分頁服務器

      分頁服務器

      作者/景文

      分頁服務器

      作者/景文

      image.png

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Web.UI;
      using System.Web.UI.WebControls;
      using System.ComponentModel;

      namespace MyQuery.MyControl
      {
      ///


      /// MyPager分頁服務器控件
      ///

      [DefaultProperty("PageSize"),
      ParseChildren(false),
      PersistChildren(false),
      Description("專用于ASP.Net Web應用程序的分頁控件"),
      Designer(typeof(MyPagerDesigner)),
      ToolboxData("<{0}:mypager runat="server">

      ")]
      public class MyPager : Panel, INamingContainer, IPostBackEventHandler
      {
      #region 屬性

      ///


      /// 獲取或設置在控件的頁導航元素中同時顯示的數值按鈕的數目。
      ///

      [Browsable(true),
      Description("要顯示的頁索引數值按鈕的數目(0為無數字按鈕及打印按鈕)"),
      Category("導航按鈕"),
      DefaultValue(10)]
      public int NumericButtonCount
      {
      get
      {
      object obj = ViewState["NumericButtonCount"];
      return (obj == null) ? 10 : (int)obj;
      }
      set
      {
      if (value != 10)
      ViewState["NumericButtonCount"] = value;
      }
      }
      ///


      /// 獲取或設置一個值,該值指示 MyPager 服務器控件是否向發出請求的客戶端保持自己的視圖狀態,該屬性經重寫后不允許設為false。
      ///

      [Browsable(true),
      Description("顯示打印按鈕"),
      Category("導航按鈕"),
      DefaultValue(false)]
      public bool EnablePrint
      {
      get
      {
      object obj = ViewState["EnablePrint"];
      return (obj == null) ? false : (bool)obj;
      }
      set
      {
      ViewState["EnablePrint"] = value;
      }
      }
      ///


      /// 獲取或設置每頁顯示的項數。
      ///

      [Browsable(true),
      Description("每頁顯示的記錄數,0為打印模式,如有查詢條件請將其id=tjWhere"),
      Category("分頁"),
      DefaultValue(20)]
      public int PageSize
      {
      get
      {
      object obj = ViewState["PageSize"];
      return (obj == null) ? 20 : (int)obj;
      }
      set
      {
      if (value != 20)
      ViewState["PageSize"] = value;
      }
      }

      ///


      /// 獲取或設置當前顯示頁的索引。
      ///

      [ReadOnly(true),
      Browsable(false),
      Description("當前顯示頁的索引"),
      Category("分頁"),
      DefaultValue(1),
      DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
      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
      {
      ViewState["CurrentPageIndex"] = value;
      }
      }

      ///


      /// 獲取或設置需要分頁的所有記錄的總數。
      ///

      [Browsable(false),
      Description("要分頁的所有記錄的總數,該值須在程序運行時設置,默認值為0。"),
      Category("分頁"),
      DefaultValue(0)]
      public int RecordCount
      {
      get
      {
      object obj = ViewState["Recordcount"];
      return (obj == null) ? 0 : (int)obj;
      }
      set { ViewState["Recordcount"] = value; }
      }

      ///


      /// 獲取所有要分頁的記錄需要的總頁數。
      ///

      [Browsable(false),
      DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
      public int PageCount
      {
      get
      {
      if (PageSize > 0)
      {
      return (int)Math.Ceiling((double)RecordCount / (double)PageSize);
      }
      else
      {
      return 1;
      }
      }
      }

      ///


      /// 獲取或設置一個值,該值指示 MyPager 服務器控件是否向發出請求的客戶端保持自己的視圖狀態,該屬性經重寫后不允許設為false。
      ///

      [Browsable(false),
      Description("是否啟用控件的視圖狀態,該屬性的值必須為true,不允許用戶設置。"),
      DefaultValue(true),
      Category("Behavior")]
      public override bool EnableViewState
      {
      get
      {
      return base.EnableViewState;
      }
      set
      {
      base.EnableViewState = true;
      }
      }

      #endregion

      #region 重寫控件的方法

      ///


      /// 重寫方法,驗證是否有form(runat=server)控件
      ///

      ///

      protected override void AddAttributesToRender(HtmlTextWriter writer)
      {
      if (this.Page != null)
      this.Page.VerifyRenderingInServerForm(this);
      base.AddAttributesToRender(writer);
      }

      ///


      /// 重寫OnLoad 方法。
      ///

      ///

      包含事件數據的

      對象。
      protected override void OnLoad(EventArgs e)
      {
      if (Page.IsPostBack)
      {
      string p = Page.Request.Form[this.UniqueID + "_Page"];
      if (p != null)
      {
      try
      {
      int n = int.Parse(p);
      PageSize = n;
      if (n > 0 && n < 20)
      {
      Page.Session["PageSize"] = n;
      }
      }
      catch
      {
      ;
      }
      }
      else if (PageSize == 0)
      {
      try
      {
      if (Page.Session["PageSize"] != null)
      {
      PageSize = Convert.ToInt32(Page.Session["PageSize"]);
      }
      else if (Page.Application["PageSize"] != null)
      {
      PageSize = Convert.ToInt32(Page.Application["PageSize"]);
      }
      }
      catch
      {
      ;
      }
      }
      }
      base.OnLoad(e);
      }
      ///
      /// 重寫方法。
      ///

      protected override void Render(HtmlTextWriter writer)
      {
      int pageCount = PageCount;
      if (pageCount > 0)
      {
      writer.Write(@"");
      }
      else
      {
      writer.Write("】");
      }
      if (EnablePrint && NumericButtonCount > 0)
      {
      if (pageCount > 1)
      {
      writer.Write("");
      }
      else
      {
      writer.Write("");
      }
      }
      if (pageCount > 1)
      {
      int p = CurrentPageIndex;
      writer.Write("
      【共" + RecordCount.ToString() + "條");
      if (pageCount > 1)
      {
      writer.Write(@"條/頁 共" + pageCount.ToString() + "頁】

      ");
      if (PageSize == 0)
      {
      writer.Write("");
      }
      writer.Write("

      ");
      if (p == 1)
      {
      writer.Write("9");
      }
      else
      {
      writer.Write("9");
      }
      int n = NumericButtonCount;
      if (n == 0)
      {
      if (p == 1)
      {
      writer.Write("7");
      }
      else
      {
      writer.Write("7");
      }
      writer.Write("" + p.ToString() + "");

      if (p == pageCount)
      {
      writer.Write("8");
      }
      else
      {
      writer.Write("8");
      }
      }
      else
      {
      if (n > 5 && p > 100)
      {
      n = 5;
      }
      int pageoffset = 0;
      int endpage = 0;
      if (pageCount <= n)
      {
      pageoffset = 0;
      endpage = pageCount;
      }
      else
      {
      if (p <= n / 2)
      {
      pageoffset = 0;
      }
      else
      {
      pageoffset = p - 1 - n / 2;
      }
      if ((pageoffset + n) > pageCount)
      {
      pageoffset = pageCount - n;
      endpage = pageCount;
      }
      else
      {
      endpage = pageoffset + n;
      }
      }

      for (int i = pageoffset + 1; i <= endpage; i++)
      {
      if (i == p)
      {
      writer.Write("" + i.ToString() + "");
      }
      else
      {
      writer.Write("[" + i.ToString() + "]");
      }
      }
      }
      if (p == pageCount)
      {
      writer.Write(":");
      }
      else
      {
      writer.Write(":");
      }
      writer.Write("");
      }
      writer.Write("");
      }
      else if (Page.IsPostBack)
      {
      writer.Write("

      沒有滿足條件的記錄!

      ");
      }
      else
      {
      writer.Write("

      請設定查詢條件后點[查詢]!

      ");
      }
      }
      #endregion

      #region 事件

      #region IPostBackEventHandler事件

      ///


      /// 實現接口,使控件能夠處理將窗體發送到服務器時引發的事件。
      ///

      ///

      public void RaisePostBackEvent(string args)
      {
      int pageIndex = 1;
      try
      {
      if (args != null)
      {
      pageIndex = int.Parse(args);
      }
      }
      catch
      {
      pageIndex = CurrentPageIndex;
      }
      OnPageChanged(new PageChangedEventArgs(pageIndex));

      }

      #endregion

      #region PageChanged Event
      ///


      /// 當頁導航元素之一被單擊或用戶手工輸入頁索引提交時發生。
      ///

      public event PageChangedEventHandler PageChanged;

      ///


      /// 引發事件。這使您可以為事件提供自定義處理程序。
      ///

      ///

      一個

      ,它包含事件數據。
      protected virtual void OnPageChanged(PageChangedEventArgs e)
      {
      if (this.PageChanged != null)
      PageChanged(this, e);
      }

      #endregion

      #endregion
      }
      #region PageChangedEventHandler 代理
      ///


      /// 表示處理事件的方法。
      ///

      public delegate void PageChangedEventHandler(object src, PageChangedEventArgs e);

      #endregion

      #region PageChangedEventArgs 類
      ///


      /// 為控件的事件提供數據。無法繼承此類。
      ///

      ///


      /// 當控件的頁導航元素之一被單擊或用戶輸入頁索引提交時引發事件。
      ///

      有關 PageChangedEventArgs 實例的初始屬性值列表,請參閱 PageChangedEventArgs 構造函數。

      ///

      public sealed class PageChangedEventArgs : EventArgs
      {
      private readonly int _newpageindex;

      ///


      /// 使用新頁面索引初始化 PageChangedEventArgs 類的新實例。
      ///

      ///

      用戶從

      控件的頁選擇元素選定的或在頁索引文本框中手工輸入的頁的索引。
      public PageChangedEventArgs(int newPageIndex)
      {
      this._newpageindex = newPageIndex;
      }

      ///


      /// 獲取用戶在控件的頁選擇元素中選定的或在頁索引文本框中手工輸入的頁的索引。
      ///

      public int NewPageIndex
      {
      get { return _newpageindex; }
      }
      }
      #endregion

      ///


      ///服務器控件設計器。
      ///

      public class MyPagerDesigner : System.Web.UI.Design.WebControls.PanelContainerDesigner
      {
      ///


      /// 自動大小
      ///

      public override bool AllowResize
      {
      get { return false; }
      }
      ///


      /// 獲取用于在設計時表示關聯控件的 HTML。
      ///

      ///

      用于在設計時表示控件的 HTML。

      public override string GetDesignTimeHtml()
      {
      MyPager wb=(MyPager)Component;
      wb.RecordCount=225;
      StringWriter sw=new StringWriter();
      HtmlTextWriter writer=new HtmlTextWriter(sw);
      wb.RenderControl(writer);
      return sw.ToString();
      }

      ///


      /// 獲取在呈現控件時遇到錯誤后在設計時為指定的異常顯示的 HTML。
      ///

      ///

      要為其顯示錯誤信息的異常。
      ///

      設計時為指定的異常顯示的 HTML。

      protected override string GetErrorDesignTimeHtml(Exception e)
      {
      string errorstr="創建控件時出錯:"+e.Message;
      return CreatePlaceHolderDesignTimeHtml(errorstr);
      }
      }

      }

      構建一個WEB開發的基礎框架(主要包括數據庫處理、頁面框架及工具類),形成ASP.NET信息管理系統快速開發架構。
      一、編輯配置支持單表數據的增加和修改,針對開發人員實現的編輯頁面可方便擴展主表新增字段

      二、列表實現了復雜查詢條件、合并行列(分組求和的處理)、匯總行及鉆取數據和圖表的鉆取
      三、框架實現了基于XML定制的列表查詢及圖表展現使開發人員專注于系統的業務實現,節省開發時間,提高開發效率
      試用登錄http://121.18.78.216/

      點擊這里復制本文地址 以上內容由IT精英團整理呈現,請務必在轉載分享時注明本文地址!如對內容有疑問,請聯系我們,謝謝!
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      退出閱讀|首頁
      警花高潮嗷嗷叫
      <del id="nnjnj"></del><track id="nnjnj"></track>

      <p id="nnjnj"></p>

      <address id="nnjnj"></address>

        <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

          <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>