<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      原創企業級控件庫之大數據量分頁控件

      原創企業級控件庫之大數據量分頁控件

      發布日期:2010年12月18日星期六作者:EricHu

       

        在上篇:我介紹了原創企業級控件庫之組合查詢控件,這篇我將給大家介紹:企業級控件庫之大數據量分頁控件。

         摘要

          說到分頁,大家采用的方法各有千秋,分頁在一個中大型軟件項目中對數據的快速呈現起到很關鍵的作用,試想一個數據量上幾十萬或者幾百萬的數據表,要是沒有分頁功能會是一個什么樣的效果。總的說來,大家采用的分頁方法大同小異,但到底那種方法才是最佳的呢,各有各的看法,讓數據說話最有效。今天我給大家分享一個WinForm下大數據量分頁控件(當然分頁思想也可用于WebForm)。雖然不能說是最佳的,但在我的幾個實際項目中,用的都是它,效果不錯,可放心使用。

         成就別人、等于成就自己。我沒什么要求,歡迎大家多多支持與評論,覺得不錯的,記得點擊文章左下角的”關注博客”,就這么簡單。同時,你要用什么好的想法,也可以與我交流,謝謝。

        分頁控件運行效果如下圖:

        

        用到的分頁存儲過程: 

      代碼
      -- =============================================
      -- Author: EricHu  QQ:406590790 WebSite:http://www.rzrgm.cn/huyong/
      -- Create date: 2008-10-25  
      -- Description: 千萬數量級分頁存儲過程
      -- Modify Date: 2010-10-26  
      -- =============================================  
       
       SET ANSI_NULLS ON
       GO
       SET QUOTED_IDENTIFIER ON
       GO
      
       ALTERPROCEDURE[dbo].[uspDividePage]
      /*
       ***************************************************************
       ** 千萬數量級分頁存儲過程**
       ***************************************************************
       參數說明:
       1.Tables       :表名或視圖名
       2.PrimaryKey  :主關鍵字
       3.Sort           :排序語句,不帶Order By 比如:UserId Desc,CreateDate Asc
       4.CurrentPage :當前頁碼
       5.PageSize       :分頁尺寸
       6.Fields      :字段列表(默認為:*)
       7.Filter      :過濾語句,不帶Where 
       8.Group       :Group語句,不帶Group By
       ***************************************************************/
       (
      @Tablesvarchar(2000),
      @PrimaryKeyvarchar(500),
      @Sortvarchar(500) =NULL,
      @CurrentPageint=1,
      @PageSizeint=10,
      @Fieldsvarchar(2000) ='*',
      @Filtervarchar(1000) =NULL,
      @Groupvarchar(1000) =NULL
       )
      AS
      /*默認排序*/
      IF@SortISNULLOR@Sort=''
      SET@Sort=@PrimaryKey
      
      DECLARE@SortTablevarchar(1000)
      DECLARE@SortNamevarchar(1000)
      DECLARE@strSortColumnvarchar(1000)
      DECLARE@operatorchar(2)
      DECLARE@typevarchar(1000)
      DECLARE@precint
      
      /*設定排序語句.*/
      IFCHARINDEX('DESC',@Sort)>0
      BEGIN
      SET@strSortColumn=REPLACE(@Sort, 'DESC', '')
      SET@operator='<='
      END
      ELSE
      BEGIN
      IFCHARINDEX('ASC', @Sort) =0
      SET@strSortColumn=REPLACE(@Sort, 'ASC', '')
      SET@operator='>='
      END
      
      IFCHARINDEX('.', @strSortColumn) >0
      BEGIN
      SET@SortTable=SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
      SET@SortName=SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) +1, LEN(@strSortColumn))
      END
      ELSE
      BEGIN
      SET@SortTable=@Tables
      SET@SortName=@strSortColumn
      END
      
      SELECT@type=t.name, @prec=c.prec
      FROM sysobjects o 
      JOIN syscolumns c on o.id=c.id
      JOIN systypes t on c.xusertype=t.xusertype
      WHERE o.name =@SortTableAND c.name =@SortName
      
      IFCHARINDEX('char', @type) >0
      SET@type=@type+'('+CAST(@precASvarchar) +')'
      
      DECLARE@strPageSizevarchar(500)
      DECLARE@strStartRowvarchar(500)
      DECLARE@strFiltervarchar(1000)
      DECLARE@strSimpleFiltervarchar(1000)
      DECLARE@strGroupvarchar(1000)
      /*默認當前頁*/
      IF@CurrentPage<1
      SET@CurrentPage=1
      
      /*設置分頁參數.*/
      SET@strPageSize=CAST(@PageSizeASvarchar(500))
      SET@strStartRow=CAST(((@CurrentPage-1)*@PageSize+1) ASvarchar(500))
      
      /*篩選以及分組語句.*/
      IF@FilterISNOTNULLAND@Filter!=''
      BEGIN
      SET@strFilter=' WHERE '+@Filter+''
      SET@strSimpleFilter=' AND '+@Filter+''
      END
      ELSE
      BEGIN
      SET@strSimpleFilter=''
      SET@strFilter=''
      END
      
      IF@GroupISNOTNULLAND@Group!=''
      SET@strGroup=' GROUP BY '+@Group+''
      ELSE
      SET@strGroup=''
      
      /*執行查詢語句*/
      EXEC(
      '
           DECLARE @SortColumn '+@type+'
           SET ROWCOUNT '+@strStartRow+'
           SELECT @SortColumn='+@strSortColumn+' FROM '+@Tables+@strFilter+''+@strGroup+' ORDER BY '+@Sort+'
           SET ROWCOUNT '+@strPageSize+'
           SELECT '+@Fields+' FROM '+@Tables+' WHERE '+@strSortColumn+@operator+' @SortColumn '+@strSimpleFilter+''+@strGroup+' ORDER BY '+@Sort+'
      ')
      GO
      
      SET ANSI_NULLS OFF
      GO
      SET QUOTED_IDENTIFIER OFF
      GO  

        本控件類圖  

       

         本控件UcpageControl類詳細信息


         本控件PageData類詳細信息


         本控件核心代碼

          一、數據源提供類PageData,主要負責與存儲過程進行交互。

       

      數據源提供(PageData)
      #region 數據源提供(PageData)
      ///<summary>
      /// 數據源提供
      ///</summary>
      publicclass PageData
          {
              DataSet ds                         =null;
      privateint    _PageSize           =50;           //分頁大小
      privateint    _PageIndex          =1;            //當前頁
      privateint    _PageCount          =0;            //總頁數
      privateint    _TotalCount         =0;            //總記錄數
      privatestring _QueryFieldName     ="*";          //表字段FieldStr
      privatebool   _isQueryTotalCounts =true;         //是否查詢總的記錄條數
      privatestring _TableName          =string.Empty; //表名        
      privatestring _OrderStr           =string.Empty; //排序_SortStr
      privatestring _QueryCondition     =string.Empty; //查詢的條件 RowFilter
      privatestring _PrimaryKey         =string.Empty; //主鍵
      
      ///<summary>
      /// 是否查詢總的記錄條數
      ///</summary>
      publicbool IsQueryTotalCounts
              {
      get { return _isQueryTotalCounts; }
      set { _isQueryTotalCounts = value; }
              }
      
      ///<summary>
      /// 分頁大小(每頁顯示多少條數據)
      ///</summary>
      publicint PageSize
              {
      get
                  {
      return _PageSize;
      
                  }
      set
                  {
                      _PageSize = value;
                  }
              }
      
      ///<summary>
      /// 當前頁
      ///</summary>
      publicint PageIndex
              {
      get
                  {
      return _PageIndex;
                  }
      set
                  {
                      _PageIndex = value;
                  }
              }
      
      ///<summary>
      /// 總頁數
      ///</summary>
      publicint PageCount
              {
      get
                  {
      return _PageCount;
                  }
              }
      
      ///<summary>
      /// 總記錄數
      ///</summary>
      publicint TotalCount
              {
      get
                  {
      return _TotalCount;
                  }
              }
      
      ///<summary>
      /// 表名或視圖名
      ///</summary>
      publicstring TableName
              {
      get
                  {
      return _TableName;
                  }
      set
                  {
                      _TableName = value;
                  }
              }
      
      ///<summary>
      /// 表字段FieldStr
      ///</summary>
      publicstring QueryFieldName
              {
      get
                  {
      return _QueryFieldName;
                  }
      set
                  {
                      _QueryFieldName = value;
                  }
              }
      
      ///<summary>
      /// 排序字段
      ///</summary>
      publicstring OrderStr
              {
      get
                  {
      return _OrderStr;
                  }
      set
                  {
                      _OrderStr = value;
                  }
              }
      
      ///<summary>
      /// 查詢條件
      ///</summary>
      publicstring QueryCondition
              {
      get
                  {
      return _QueryCondition;
                  }
      set
                  {
                      _QueryCondition = value;
                  }
              }
      
      ///<summary>
      /// 主鍵
      ///</summary>
      publicstring PrimaryKey
              {
      get 
                  {
      return _PrimaryKey;
                  }
      set 
                  {
                      _PrimaryKey = value;
                  }
              }
      
      ///<summary>
      /// 得到分頁數據
      ///</summary>
      ///<param name="connectionstring">連接字符串</param>
      ///<returns>DataSet</returns>
      public DataSet QueryDataTable(string connectionstring)
              {
                  SqlParameter[] parameters = {
      new SqlParameter("@Tables",      SqlDbType.VarChar,  255),
      new SqlParameter("@PrimaryKey" , SqlDbType.VarChar , 255),    
      new SqlParameter("@Sort",        SqlDbType.VarChar , 255),
      new SqlParameter("@CurrentPage", SqlDbType.Int          ),
      new SqlParameter("@PageSize",    SqlDbType.Int          ),                                    
      new SqlParameter("@Fields",      SqlDbType.VarChar,  255),
      new SqlParameter("@Filter",      SqlDbType.VarChar,  1000),
      new SqlParameter("@Group" ,      SqlDbType.VarChar,  1000)
                          };
                  parameters[0].Value = _TableName;
                  parameters[1].Value = _PrimaryKey;
                  parameters[2].Value = _OrderStr;
                  parameters[3].Value = PageIndex;
                  parameters[4].Value = PageSize;
                  parameters[5].Value =_QueryFieldName;
                  parameters[6].Value = _QueryCondition;
                  parameters[7].Value =string.Empty;
                  ds =null;
                  ds =new DataSet();
                  ds = DbHelperSQL.RunProcedure(connectionstring, "uspDividePage", parameters, "tbPageData");
      
      if (_isQueryTotalCounts)
                  {
                      _TotalCount = GetTotalCount(connectionstring);
                  }
      
      if (_TotalCount ==0)
                  {
                      _PageIndex =0;
                      _PageCount =0;
                  }
      else
                  {
                      _PageCount = _TotalCount % _PageSize ==0? _TotalCount / _PageSize : _TotalCount / _PageSize +1;
      
      if (_PageIndex > _PageCount)
                      {
                          _PageIndex = _PageCount;
                          parameters[4].Value = _PageSize;
                          ds = QueryDataTable(connectionstring);
                      }
                  }
      
      return ds;
              }
      
      ///<summary>
      /// 得到總的記錄數
      ///</summary>
      ///<param name="connectionstring">連接字符串</param>
      ///<returns>總的記錄數</returns>
      publicint GetTotalCount(string connectionstring)
              {
      string strSql =" select count(1) from "+_TableName;
      
      if (_QueryCondition !=string.Empty)
                  {
                      strSql +=" where "+ _QueryCondition;
                  }
      
      return Convert.ToInt32(DbHelperSQL.GetSingle(strSql.ToString(), connectionstring));
              }
          }
      #endregion  

       

         窗體調用方法 

           一、設置窗體調用公共方法。

             #region 綁定DataGridView
              ///<summary>
              /// 綁定DataGridView
              ///</summary>
              ///<param name="sTb">表名</param>
              ///<param name="sPk">主鍵</param>
              ///<param name="sOrderField">排序字段</param>
              ///<param name="sWhere">查詢條件</param>
              ///<param name="sQueryFieldName">字段列表</param>
              ///<returns>總記錄數</returns>
          private int dgvBind(string sTb, string sPk, string sOrderField, string sWhere, string sQueryFieldName)
              {
                  pageData =null;
                  dtPub =null;
                  pageData =new PageData();
                  dtPub =new DataTable();
                  pageData.TableName = sTb;
                  pageData.PrimaryKey = sPk;
                  pageData.OrderStr = sOrderField;
                  pageData.PageIndex =this.ucPageControlTest.PageCurrent;
                  pageData.PageSize =200;
                  pageData.QueryCondition = sWhere;
                  pageData.QueryFieldName = sQueryFieldName;
                  dtPub = pageData.QueryDataTable(ConfigurationSettings.AppSettings["DbConnection"]).Tables["tbPageData"];
                  this.ucPageControlTest.bindingSource.DataSource = dtPub;
                  this.ucPageControlTest.bindingNavigator.BindingSource = ucPageControlTest.bindingSource;
                  dgvUcPageControlTest.DataSource =null;
                  dgvUcPageControlTest.DataSource =this.ucPageControlTest.bindingSource;
                  if (dgvUcPageControlTest.Rows.Count >0)
                  {
                      dgvUcPageControlTest[4, ucPageControlTest.bindingSource.Position].Selected =true;
                  }
                  return pageData.TotalCount;
              }
              #endregion      

         二、在控件的EventPaging事件代碼中調用即可。

      return dgvBind("tbTestData", "UniqueID", "UniqueID", sQueryWhere, "*"); 

               三、SqlServer測試數據代碼如下:

      -- =============================================
      -- Author: EricHu  QQ:80368704 WebSite:http://www.rzrgm.cn/huyong/
      -- Create date: 2010-12-18  
      -- Description: 原創企業級控件庫之大數據量分頁控件---測試數據 
      -- Modify Date: 2010-12-18   
      -- =============================================  
      
      /*一、創建數據庫dbTest*/
      CREATEDATABASE dbTest
      go
      
      /*二、創建數據表*/
      USE[dbTest]
      GO
      
      CREATETABLE[dbo].[tbTestData](
          [UniqueID][bigint]IDENTITY(20000,1) NOTNULL,
          [CompanyName][varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
          [CompanyCode][varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
          [Address][varchar](500) COLLATE Chinese_PRC_CI_AS NULL,
          [Owner][varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
          [Memo][varchar](2000) COLLATE Chinese_PRC_CI_AS NULL,
          [InsetDataTime][datetime]NULLCONSTRAINT[DF_tbTestData_InsetDataTime]DEFAULT (getdate()),
       CONSTRAINT[PK_tbTestData]PRIMARYKEYCLUSTERED 
      (
          [UniqueID]ASC
      )WITH (IGNORE_DUP_KEY =OFF) ON[PRIMARY]
      ) ON[PRIMARY]
      GO
      
      /*三、增加測試數據*/
      declare@countbigint
      select@count=1
      while@count<=5000000
      begin
          insertinto tbTestData
          values('Company'+cast(@countasvarchar),'CompanyCode'+cast(@countasvarchar)
                ,'Address'+cast(@countasvarchar),'Owner'+cast(@countasvarchar)
                ,'Memo'+cast(@countasvarchar),getdate())
          select@count=@count+1    
      end  

              下面給出本控件完整代碼 

      #region  版權信息
      /*---------------------------------------------------------------------*
      // Copyright (C) 2010 http://www.rzrgm.cn/huyong
      // 版權所有。 
      // 項目  名稱:《Winform通用控件庫》
      // 文  件  名: UcPageControl.cs
      // 類  全  名: DotNet.Controls.UcPageControl 
      // 描      述:  分頁控件
      // 創建  時間: 2010-06-05
      // 創建人信息: [**** 姓名:胡勇 QQ:406590790 E-Mail:406590790@qq.com *****]
      *----------------------------------------------------------------------*/
      #endregion
      
      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Drawing;
      using System.Data;
      using System.Data.SqlClient;
      using System.Windows.Forms;
      using DotNet.Common;
      using DotNet.DBUtility;
      
      namespace DotNet.Controls
      {
      #region 委托申明
      ///<summary>
      /// 申明委托
      ///</summary>
      ///<param name="e"></param>
      ///<returns></returns>
      publicdelegateint EventPagingHandler(EventPagingArg e);
      #endregion
      
      #region 分頁控件
      ///<summary>
      /// 分頁控件
      /// 
      /// 修改紀錄(此分頁控件經過多次修改,已趨于完美,可放心使用。)
      ///     2010-12-06 胡勇 對上一條、下一條、首條、末條數據導航的隱藏,因為控件本身已做了處理。
      ///     2010-12-05 胡勇 對分頁控件代碼做了相應優化
      ///     2010-06-05 胡勇 創建分頁控件
      ///     
      ///<author>
      ///<name>胡勇</name>
      ///<QQ>406590790</QQ>
      ///<Email>406590790@qq.com</Email>
      ///</author>
      ///</summary>
          [ToolboxItem(true)]
          [DefaultEvent("EventPaging")]
          [ToolboxBitmap(typeof(UcPageControl), "DotNet.Controls.Images.UcPageControl.bmp")]
          [Description("分頁控件")]
      publicpartialclass UcPageControl : UserControl
          {
      #region 申明事件
      ///<summary>
      /// 單擊移動到當前頁上一末記錄時發生
      ///</summary>
              [Category("數據分頁"), Description("單擊移動到當前頁上一末記錄時發生。"),Browsable(false)]
      publicevent EventHandler OnBindingNavigatorMovePreviousItemClick;
      
      ///<summary>
      /// 單擊移動到當前頁第一條記錄時發生
      ///</summary>
              [Category("數據分頁"), Description("單擊移動到當前頁第一條記錄時發生。"), Browsable(false)]
      publicevent EventHandler OnBindingNavigatorMoveFirstItemClick;
      
      ///<summary>
      /// 單擊移動到當前頁下一條記錄時發生
      ///</summary>
              [Category("數據分頁"), Description("單擊移動到當前頁下一條記錄時發生。"), Browsable(false)]
      publicevent EventHandler OnBindingNavigatorMoveNextItemClick;
      
      ///<summary>
      /// 單擊移動到當前頁最后一條記錄時發生
      ///</summary>
              [Category("數據分頁"), Description("單擊移動到當前頁最后一條記錄時發生。"), Browsable(false)]
      publicevent EventHandler OnBindingNavigatorMoveLastItemClick;
      
      ///<summary>
      /// 單擊各分頁按鈕(上一頁、下一頁、第一頁、最后一頁和轉到某頁)時發生
      ///</summary>
              [Category("數據分頁"), Description("分頁時發生。")]
      publicevent EventPagingHandler EventPaging;
      #endregion
      
      #region 構造函數
      public UcPageControl()
              {
                  InitializeComponent();
              }
      #endregion
      
      #region 屬性
      
      privateint _pageSize    =50;  //每頁顯示記錄數
      privateint _nMax        =0;   //總記錄數
      privateint _pageCount   =0;   //頁數=總記錄數/每頁顯示記錄數
      privateint _pageCurrent =0;   //當前頁號
      
      ///<summary>
      /// 每頁顯示記錄數
      ///</summary>
              [Category("數據分頁"), Description("每頁顯示記錄數。"), Browsable(false)]
      publicint PageSize
              {
      get 
                  { 
      return _pageSize;
                  }
      set
                  {
                      _pageSize = value;
                      GetPageCount();//頁數
                  }
              }              
            
      ///<summary>
      /// 記錄總數
      ///</summary>
              [Category("數據分頁"), Description("記錄總數。"),Browsable(false)]
      publicint NMax
              {
      get 
                  { 
      return _nMax; 
                  }
      set
                  {
                      _nMax = value;
                      GetPageCount();
                  }
              }       
      
      ///<summary>
      /// 頁數
      ///</summary>
              [Category("數據分頁"), Description("頁數。"), Browsable(false)]
      publicint PageCount
              {
      get 
                  { 
      return _pageCount;
                  }
      set 
                  { 
                      _pageCount = value; 
                  }
              }       
      
      ///<summary>
      /// 當前頁號
      ///</summary>
              [Category("數據分頁"), Description("當前頁號。"), Browsable(false)]
      publicint PageCurrent
              {
      get 
                  {
      return _pageCurrent;
                  }
      set 
                  {
                      _pageCurrent = value; 
                  }
              }
      #endregion
      
      #region 方法
              [Category("數據分頁"), Description("bindingNavigator。"), Browsable(false)]
      public BindingNavigator ToolBar
              {
      get 
                  { 
      returnthis.bindingNavigator;
                  }
              }
      
      ///<summary>
      /// 得到總頁數
      ///</summary>
      privatevoid GetPageCount()
              {
      if (this.NMax >0)
                  {
      this.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(this.NMax) / Convert.ToDouble(this.PageSize)));
                  }
      else
                  {
      this.PageCount =0;
                  }
              }
      
      ///<summary>
      /// 綁定分頁控件(關鍵代碼)
      ///</summary>
      publicvoid Bind()
              {
      if (this.EventPaging !=null)
                  {
      this.NMax =this.EventPaging(new EventPagingArg(this.PageCurrent));
                  }
      
      if (this.PageCurrent >this.PageCount)
                  {
      this.PageCurrent =this.PageCount;
                  }
      if (this.PageCount ==1)
                  {
      this.PageCurrent =1;
                  }
                  lblPageCount.Text =this.PageCount.ToString();
      this.lblMaxPage.Text ="共"+this.NMax.ToString()+"條記錄";
      this.txtCurrentPage.Text =this.PageCurrent.ToString();
      
      if (this.PageCurrent ==1)
                  {
      this.btnPrev.Enabled =false;
      this.btnFirst.Enabled =false;
                  }
      else
                  {
                      btnPrev.Enabled =true;
                      btnFirst.Enabled =true;
                  }
      
      if (this.PageCurrent ==this.PageCount)
                  {
      this.btnLast.Enabled =false;
      this.btnNext.Enabled =false;
                  }
      else
                  {
                      btnLast.Enabled =true;
                      btnNext.Enabled =true;
                  }
      
      if (this.NMax ==0)
                  {
                      btnNext.Enabled =false;
                      btnLast.Enabled =false;
                      btnFirst.Enabled =false;
                      btnPrev.Enabled =false;
                  }
              }
      
      #endregion
      
      #region 按鈕事件
      privatevoid btnFirst_Click(object sender, EventArgs e)
              {
                  PageCurrent =1;
      this.Bind();
              }
      
      privatevoid btnPrev_Click(object sender, EventArgs e)
              {
                  PageCurrent -=1;
      if (PageCurrent <=0)
                  {
                      PageCurrent =1;
                  }
      this.Bind();
              }
      
      privatevoid btnNext_Click(object sender, EventArgs e)
              {
      this.PageCurrent +=1;
      if (PageCurrent > PageCount)
                  {
                      PageCurrent = PageCount;
                  }
      this.Bind();
              }
      
      privatevoid btnLast_Click(object sender, EventArgs e)
              {
                  PageCurrent = PageCount;
      this.Bind();
              }
      
      privatevoid btnGo_Click(object sender, EventArgs e)
              {
      if (this.txtCurrentPage.Text !=null&& txtCurrentPage.Text !="")
                  {
      if (Int32.TryParse(txtCurrentPage.Text, out _pageCurrent))
                      {
      this.Bind();
                      }
      else
                      {
                          DialogHelper.ShowErrorMsg("輸入數字格式錯誤!");
                      }
                  }
              }
      
      privatevoid txtCurrentPage_KeyDown(object sender, KeyEventArgs e)
              {
      if (e.KeyCode == Keys.Enter)
                  {
      this.Bind();
                  }
              }
      
      privatevoid bindingNavigatorMovePreviousItem_Click(object sender, EventArgs e)
              {
      if(OnBindingNavigatorMovePreviousItemClick !=null)
                  {
                      OnBindingNavigatorMovePreviousItemClick(this, null);
                  }
              }
      
      privatevoid bindingNavigatorMoveFirstItem_Click(object sender, EventArgs e)
              {
      if (OnBindingNavigatorMoveFirstItemClick !=null)
                  {
                      OnBindingNavigatorMoveFirstItemClick(this, null);
                  }
              }
      
      privatevoid bindingNavigatorMoveNextItem_Click(object sender, EventArgs e)
              {
      if (OnBindingNavigatorMoveNextItemClick !=null)
                  {
                      OnBindingNavigatorMoveNextItemClick(this, null);
                  }
              }
      
      privatevoid bindingNavigatorMoveLastItem_Click(object sender, EventArgs e)
              {
      if (OnBindingNavigatorMoveLastItemClick !=null)
                  {
                      OnBindingNavigatorMoveLastItemClick(this, null);
                  }
              }
      #endregion
          }
      #endregion
      
      #region 自定義事件數據基類
      ///<summary>
      /// 自定義事件數據基類
      ///</summary>
      publicclass EventPagingArg : EventArgs
          {
      privateint _intPageIndex;
      public EventPagingArg(int PageIndex)
              {
                  _intPageIndex = PageIndex;
              }
          }
      #endregion
      
      #region 數據源提供(PageData)
      ///<summary>
      /// 數據源提供
      ///</summary>
      publicclass PageData
          {
              DataSet ds                         =null;
      privateint    _PageSize           =50;           //分頁大小
      privateint    _PageIndex          =1;            //當前頁
      privateint    _PageCount          =0;            //總頁數
      privateint    _TotalCount         =0;            //總記錄數
      privatestring _QueryFieldName     ="*";          //表字段FieldStr
      privatebool   _isQueryTotalCounts =true;         //是否查詢總的記錄條數
      privatestring _TableName          =string.Empty; //表名        
      privatestring _OrderStr           =string.Empty; //排序_SortStr
      privatestring _QueryCondition     =string.Empty; //查詢的條件 RowFilter
      privatestring _PrimaryKey         =string.Empty; //主鍵
      
      ///<summary>
      /// 是否查詢總的記錄條數
      ///</summary>
      publicbool IsQueryTotalCounts
              {
      get { return _isQueryTotalCounts; }
      set { _isQueryTotalCounts = value; }
              }
      
      ///<summary>
      /// 分頁大小(每頁顯示多少條數據)
      ///</summary>
      publicint PageSize
              {
      get
                  {
      return _PageSize;
      
                  }
      set
                  {
                      _PageSize = value;
                  }
              }
      
      ///<summary>
      /// 當前頁
      ///</summary>
      publicint PageIndex
              {
      get
                  {
      return _PageIndex;
                  }
      set
                  {
                      _PageIndex = value;
                  }
              }
      
      ///<summary>
      /// 總頁數
      ///</summary>
      publicint PageCount
              {
      get
                  {
      return _PageCount;
                  }
              }
      
      ///<summary>
      /// 總記錄數
      ///</summary>
      publicint TotalCount
              {
      get
                  {
      return _TotalCount;
                  }
              }
      
      ///<summary>
      /// 表名或視圖名
      ///</summary>
      publicstring TableName
              {
      get
                  {
      return _TableName;
                  }
      set
                  {
                      _TableName = value;
                  }
              }
      
      ///<summary>
      /// 表字段FieldStr
      ///</summary>
      publicstring QueryFieldName
              {
      get
                  {
      return _QueryFieldName;
                  }
      set
                  {
                      _QueryFieldName = value;
                  }
              }
      
      ///<summary>
      /// 排序字段
      ///</summary>
      publicstring OrderStr
              {
      get
                  {
      return _OrderStr;
                  }
      set
                  {
                      _OrderStr = value;
                  }
              }
      
      ///<summary>
      /// 查詢條件
      ///</summary>
      publicstring QueryCondition
              {
      get
                  {
      return _QueryCondition;
                  }
      set
                  {
                      _QueryCondition = value;
                  }
              }
      
      ///<summary>
      /// 主鍵
      ///</summary>
      publicstring PrimaryKey
              {
      get 
                  {
      return _PrimaryKey;
                  }
      set 
                  {
                      _PrimaryKey = value;
                  }
              }
      
      ///<summary>
      /// 得到分頁數據
      ///</summary>
      ///<param name="connectionstring">連接字符串</param>
      ///<returns>DataSet</returns>
      public DataSet QueryDataTable(string connectionstring)
              {
                  SqlParameter[] parameters = {
      new SqlParameter("@Tables",      SqlDbType.VarChar,  255),
      new SqlParameter("@PrimaryKey" , SqlDbType.VarChar , 255),    
      new SqlParameter("@Sort",        SqlDbType.VarChar , 255),
      new SqlParameter("@CurrentPage", SqlDbType.Int          ),
      new SqlParameter("@PageSize",    SqlDbType.Int          ),                                    
      new SqlParameter("@Fields",      SqlDbType.VarChar,  255),
      new SqlParameter("@Filter",      SqlDbType.VarChar,  1000),
      new SqlParameter("@Group" ,      SqlDbType.VarChar,  1000)
                          };
                  parameters[0].Value = _TableName;
                  parameters[1].Value = _PrimaryKey;
                  parameters[2].Value = _OrderStr;
                  parameters[3].Value = PageIndex;
                  parameters[4].Value = PageSize;
                  parameters[5].Value =_QueryFieldName;
                  parameters[6].Value = _QueryCondition;
                  parameters[7].Value =string.Empty;
                  ds =null;
                  ds =new DataSet();
                  ds = DbHelperSQL.RunProcedure(connectionstring, "uspDividePage", parameters, "tbPageData");
      
      if (_isQueryTotalCounts)
                  {
                      _TotalCount = GetTotalCount(connectionstring);
                  }
      
      if (_TotalCount ==0)
                  {
                      _PageIndex =0;
                      _PageCount =0;
                  }
      else
                  {
                      _PageCount = _TotalCount % _PageSize ==0? _TotalCount / _PageSize : _TotalCount / _PageSize +1;
      
      if (_PageIndex > _PageCount)
                      {
                          _PageIndex = _PageCount;
                          parameters[4].Value = _PageSize;
                          ds = QueryDataTable(connectionstring);
                      }
                  }
      
      return ds;
              }
      
      ///<summary>
      /// 得到總的記錄數
      ///</summary>
      ///<param name="connectionstring">連接字符串</param>
      ///<returns>總的記錄數</returns>
      publicint GetTotalCount(string connectionstring)
              {
      string strSql =" select count(1) from "+_TableName;
      
      if (_QueryCondition !=string.Empty)
                  {
                      strSql +=" where "+ _QueryCondition;
                  }
      
      return Convert.ToInt32(DbHelperSQL.GetSingle(strSql.ToString(), connectionstring));
              }
          }
      #endregion
      }
      

       

        

       

       

      posted @ 2010-12-18 22:52  .NET快速開發框架  閱讀(11254)  評論(73)    收藏  舉報
      主站蜘蛛池模板: 亚洲天堂av免费在线看| 国产精品国产三级在线专区| 精品久久久中文字幕一区| 99在线 | 亚洲| 狠狠v日韩v欧美v| 欧洲美熟女乱又伦免费视频| 最新亚洲春色av无码专区| 正在播放肥臀熟妇在线视频| 国产乱码日产乱码精品精| 久久av高潮av喷水av无码| 久久久久久伊人高潮影院| 国产成人无码精品久久久露脸 | 日本视频高清一区二区三区| 国产精品白浆无码流出| 国产色无码专区在线观看| 亚洲日韩欧洲乱码av夜夜摸| 亚洲精品动漫免费二区| 欧美xxxxhd高清| 91亚洲精品一区二区三区| 中国亚州女人69内射少妇| 午夜国产小视频| 亚洲国产精品一二三区| 亚洲夜色噜噜av在线观看| 国产成人精品无缓存在线播放| jizzjizz少妇亚洲水多| 日本新janpanese乱熟| 亚洲人成网站在线在线观看| 狠狠躁夜夜躁人人爽天天天天| 人妻少妇精品视频二区| 女人喷水高潮时的视频网站| 欧美亚洲另类制服卡通动漫| 国产精品无码无片在线观看3d| 国产精品一区在线蜜臀| 香蕉久久精品日日躁夜夜躁夏| 亚洲a∨无码无在线观看| 亚洲人成网线在线播放VA| 99国产精品白浆无码流出| 亚洲人成在线观看| 91亚洲一线产区二线产区| 国产一区二区不卡自拍| 国产日产精品系列|