日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁編程開發(fā)其它知識 → 企業(yè)級大數(shù)據(jù)量分頁控件

      企業(yè)級大數(shù)據(jù)量分頁控件

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/12/19 1:28:26字體大。A-A+

      作者:佚名點(diǎn)擊:231次評論:0次標(biāo)簽: 分頁控件 大數(shù)據(jù)分頁

      • 類型:編程控件大。5.9M語言:中文 評分:7.5
      • 標(biāo)簽:
      立即下載
        說到分頁,大家采用的方法各有千秋,分頁在一個中大型軟件項目中對數(shù)據(jù)的快速呈現(xiàn)起到很關(guān)鍵的作用,試想一個數(shù)據(jù)量上幾十萬或者幾百萬的數(shù)據(jù)表,要是沒有分頁功能會是一個什么樣的效果?偟恼f來,大家采用的分頁方法大同小異,但到底那種方法才是最佳的呢,各有各的看法,讓數(shù)據(jù)說話最有效。今天我給大家分享一個WinForm下大數(shù)據(jù)量分頁控件(當(dāng)然分頁思想也可用于WebForm)。雖然不能說是最佳的,但在我的幾個實(shí)際項目中,用的都是它,效果不錯,可放心使用。

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

        分頁控件運(yùn)行效果如下圖:

        

             用到的分頁存儲過程:  

       1-- =============================================
        2-- Author: EricHu  
        3-- Create date: 2008-10-25 
        4-- Description: 千萬數(shù)量級分頁存儲過程
        5-- Modify Date: 2010-10-26 
        6-- ============================================= 
        7 
        8 SET ANSI_NULLS ON
        9 GO
      10 SET QUOTED_IDENTIFIER ON
      11 GO
      12
      13 ALTERPROCEDURE[dbo].[uspDividePage]
      14/*
      15 ***************************************************************
      16 ** 千萬數(shù)量級分頁存儲過程**
      17 ***************************************************************
      18 參數(shù)說明:
      19 1.Tables       :表名或視圖名
      20 2.PrimaryKey  :主關(guān)鍵字
      21 3.Sort           :排序語句,不帶Order By 比如:UserId Desc,CreateDate Asc
      22 4.CurrentPage :當(dāng)前頁碼
      23 5.PageSize       :分頁尺寸
      24 6.Fields      :字段列表(默認(rèn)為:*)
      25 7.Filter      :過濾語句,不帶Where
      26 8.Group       :Group語句,不帶Group By
      27 ***************************************************************/
      28 (
      29@Tablesvarchar(2000),
      30@PrimaryKeyvarchar(500),
      31@Sortvarchar(500) =NULL,
      32@CurrentPageint=1,
      33@PageSizeint=10,
      34@Fieldsvarchar(2000) ='*',
      35@Filtervarchar(1000) =NULL,
      36@Groupvarchar(1000) =NULL
      37 )
      38AS
      39/*默認(rèn)排序*/
      40IF@SortISNULLOR@Sort=''
      41SET@Sort=@PrimaryKey
      42
      43DECLARE@SortTablevarchar(1000)
      44DECLARE@SortNamevarchar(1000)
      45DECLARE@strSortColumnvarchar(1000)
      46DECLARE@operatorchar(2)
      47DECLARE@typevarchar(1000)
      48DECLARE@precint
      49
      50/*設(shè)定排序語句.*/
      51IFCHARINDEX('DESC',@Sort)>0
      52BEGIN
      53SET@strSortColumn=REPLACE(@Sort, 'DESC', '')
      54SET@operator='<='
      55END
      56ELSE
      57BEGIN
      58IFCHARINDEX('ASC', @Sort) =0
      59SET@strSortColumn=REPLACE(@Sort, 'ASC', '')
      60SET@operator='>='
      61END
      62
      63IFCHARINDEX('.', @strSortColumn) >0
      64BEGIN
      65SET@SortTable=SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
      66SET@SortName=SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) +1, LEN(@strSortColumn))
      67END
      68ELSE
      69BEGIN
      70SET@SortTable=@Tables
      71SET@SortName=@strSortColumn
      72END
      73
      74SELECT@type=t.name, @prec=c.prec
      75FROM sysobjects o
      76JOIN syscolumns c on o.id=c.id
      77JOIN systypes t on c.xusertype=t.xusertype
      78WHERE o.name =@SortTableAND c.name =@SortName
      79
      80IFCHARINDEX('char', @type) >0
      81SET@type=@type+'('+CAST(@precASvarchar) +')'
      82
      83DECLARE@strPageSizevarchar(500)
      84DECLARE@strStartRowvarchar(500)
      85DECLARE@strFiltervarchar(1000)
      86DECLARE@strSimpleFiltervarchar(1000)
      87DECLARE@strGroupvarchar(1000)
      88/*默認(rèn)當(dāng)前頁*/
      89IF@CurrentPage<1
      90SET@CurrentPage=1
      91
      92/*設(shè)置分頁參數(shù).*/
      93SET@strPageSize=CAST(@PageSizeASvarchar(500))
      94SET@strStartRow=CAST(((@CurrentPage-1)*@PageSize+1) ASvarchar(500))
      95
      96/*篩選以及分組語句.*/
      97IF@FilterISNOTNULLAND@Filter!=''
      98BEGIN
      99SET@strFilter=' WHERE '+@Filter+''
      100SET@strSimpleFilter=' AND '+@Filter+''
      101END
      102ELSE
      103BEGIN
      104SET@strSimpleFilter=''
      105SET@strFilter=''
      106END
      107
      108IF@GroupISNOTNULLAND@Group!=''
      109SET@strGroup=' GROUP BY '+@Group+''
      110ELSE
      111SET@strGroup=''
      112
      113/*執(zhí)行查詢語句*/
      114EXEC(
      115'
      116     DECLARE @SortColumn '+@type+'
      117     SET ROWCOUNT '+@strStartRow+'
      118     SELECT @SortColumn='+@strSortColumn+' FROM '+@Tables+@strFilter+''+@strGroup+' ORDER BY '+@Sort+'
      119     SET ROWCOUNT '+@strPageSize+'
      120     SELECT '+@Fields+' FROM '+@Tables+' WHERE '+@strSortColumn+@operator+' @SortColumn '+@strSimpleFilter+''+@strGroup+' ORDER BY '+@Sort+'
      121')
      122GO
      123
      124SET ANSI_NULLS OFF
      125GO
      126SET QUOTED_IDENTIFIER OFF
      127GO
      128

         本控件類圖  

         本控件UcpageControl類詳細(xì)信息


         本控件PageData類詳細(xì)信息


         本控件核心代碼

          一、數(shù)據(jù)源提供類PageData,主要負(fù)責(zé)與存儲過程進(jìn)行交互。

      數(shù)據(jù)源提供(PageData)
      1#region 數(shù)據(jù)源提供(PageData)
      2///<summary>
      3/// 數(shù)據(jù)源提供
      4///</summary>
      5publicclass PageData
      6 {
      7 DataSet ds =null;
      8privateint _PageSize =50; //分頁大小
      9privateint _PageIndex =1; //當(dāng)前頁
      10privateint _PageCount =0; //總頁數(shù)
      11privateint _TotalCount =0; //總記錄數(shù)
      12privatestring _QueryFieldName ="*"; //表字段FieldStr
      13privatebool _isQueryTotalCounts =true; //是否查詢總的記錄條數(shù)
      14privatestring _TableName =string.Empty; //表名
      15privatestring _OrderStr =string.Empty; //排序_SortStr
      16privatestring _QueryCondition =string.Empty; //查詢的條件 RowFilter
      17privatestring _PrimaryKey =string.Empty; //主鍵
      18
      19///<summary>
      20/// 是否查詢總的記錄條數(shù)
      21///</summary>
      22publicbool IsQueryTotalCounts
      23 {
      24get { return _isQueryTotalCounts; }
      25set { _isQueryTotalCounts = value; }
      26 }
      27
      28///<summary>
      29/// 分頁大小(每頁顯示多少條數(shù)據(jù))
      30///</summary>
      31publicint PageSize
      32 {
      33get
      34 {
      35return _PageSize;
      36
      37 }
      38set
      39 {
      40 _PageSize = value;
      41 }
      42 }
      43
      44///<summary>
      45/// 當(dāng)前頁
      46///</summary>
      47publicint PageIndex
      48 {
      49get
      50 {
      51return _PageIndex;
      52 }
      53set
      54 {
      55 _PageIndex = value;
      56 }
      57 }
      58
      59///<summary>
      60/// 總頁數(shù)
      61///</summary>
      62publicint PageCount
      63 {
      64get
      65 {
      66return _PageCount;
      67 }
      68 }
      69
      70///<summary>
      71/// 總記錄數(shù)
      72///</summary>
      73publicint TotalCount
      74 {
      75get
      76 {
      77return _TotalCount;
      78 }
      79 }
      80
      81///<summary>
      82/// 表名或視圖名
      83///</summary>
      84publicstring TableName
      85 {
      86get
      87 {
      88return _TableName;
      89 }
      90set
      91 {
      92 _TableName = value;
      93 }
      94 }
      95
      96///<summary>
      97/// 表字段FieldStr
      98///</summary>
      99publicstring QueryFieldName
      100 {
      101get
      102 {
      103return _QueryFieldName;
      104 }
      105set
      106 {
      107 _QueryFieldName = value;
      108 }
      109 }
      110
      111///<summary>
      112/// 排序字段
      113///</summary>
      114publicstring OrderStr
      115 {
      116get
      117 {
      118return _OrderStr;
      119 }
      120set
      121 {
      122 _OrderStr = value;
      123 }
      124 }
      125
      126///<summary>
      127/// 查詢條件
      128///</summary>
      129publicstring QueryCondition
      130 {
      131get
      132 {
      133return _QueryCondition;
      134 }
      135set
      136 {
      137 _QueryCondition = value;
      138 }
      139 }
      140
      141///<summary>
      142/// 主鍵
      143///</summary>
      144publicstring PrimaryKey
      145 {
      146get
      147 {
      148return _PrimaryKey;
      149 }
      150set
      151 {
      152 _PrimaryKey = value;
      153 }
      154 }
      155
      156///<summary>
      157/// 得到分頁數(shù)據(jù)
      158///</summary>
      159///<param name="connectionstring">連接字符串</param>
      160///<returns>DataSet</returns>
      161public DataSet QueryDataTable(string connectionstring)
      162 {
      163 SqlParameter[] parameters = {
      164new SqlParameter("@Tables", SqlDbType.VarChar, 255),
      165new SqlParameter("@PrimaryKey" , SqlDbType.VarChar , 255),
      166new SqlParameter("@Sort", SqlDbType.VarChar , 255),
      167new SqlParameter("@CurrentPage", SqlDbType.Int ),
      168new SqlParameter("@PageSize", SqlDbType.Int ),
      169new SqlParameter("@Fields", SqlDbType.VarChar, 255),
      170new SqlParameter("@Filter", SqlDbType.VarChar, 1000),
      171new SqlParameter("@Group" , SqlDbType.VarChar, 1000)
      172 };
      173 parameters[0].Value = _TableName;
      174 parameters[1].Value = _PrimaryKey;
      175 parameters[2].Value = _OrderStr;
      176 parameters[3].Value = PageIndex;
      177 parameters[4].Value = PageSize;
      178 parameters[5].Value =_QueryFieldName;
      179 parameters[6].Value = _QueryCondition;
      180 parameters[7].Value =string.Empty;
      181 ds =null;
      182 ds =new DataSet();
      183 ds = DbHelperSQL.RunProcedure(connectionstring, "uspDividePage", parameters, "tbPageData");
      184
      185if (_isQueryTotalCounts)
      186 {
      187 _TotalCount = GetTotalCount(connectionstring);
      188 }
      189
      190if (_TotalCount ==0)
      191 {
      192 _PageIndex =0;
      193 _PageCount =0;
      194 }
      195else
      196 {
      197 _PageCount = _TotalCount % _PageSize ==0? _TotalCount / _PageSize : _TotalCount / _PageSize +1;
      198
      199if (_PageIndex > _PageCount)
      200 {
      201 _PageIndex = _PageCount;
      202 parameters[4].Value = _PageSize;
      203 ds = QueryDataTable(connectionstring);
      204 }
      205 }
      206
      207return ds;
      208 }
      209
      210///<summary>
      211/// 得到總的記錄數(shù)
      212///</summary>
      213///<param name="connectionstring">連接字符串</param>
      214///<returns>總的記錄數(shù)</returns>
      215publicint GetTotalCount(string connectionstring)
      216 {
      217string strSql =" select count(1) from "+_TableName;
      218
      219if (_QueryCondition !=string.Empty)
      220 {
      221 strSql +=" where "+ _QueryCondition;
      222 }
      223
      224return Convert.ToInt32(DbHelperSQL.GetSingle(strSql.ToString(), connectionstring));
      225 }
      226 }
      227#endregion

         窗體調(diào)用方法

           一、設(shè)置窗體調(diào)用公共方法。

      代碼
      #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>總記錄數(shù)</returns>
      privateint 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事件代碼中調(diào)用即可。

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

               三、SqlServer測試數(shù)據(jù)代碼如下:

      代碼
      -- =============================================
      --
      Author: EricHu QQ:80368704 WebSite:http://www.cnblogs.com/huyong/
      --
      Create date: 2010-12-18
      --
      Description: 原創(chuàng)企業(yè)級控件庫之大數(shù)據(jù)量分頁控件---測試數(shù)據(jù)
      --
      Modify Date: 2010-12-18
      --
      =============================================

      /*一、創(chuàng)建數(shù)據(jù)庫dbTest*/
      CREATEDATABASE dbTest
      go

      /*二、創(chuàng)建數(shù)據(jù)表*/
      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

      /*三、增加測試數(shù)據(jù)*/
      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

              下面給出本控件完整代碼

      原創(chuàng)企業(yè)級控件庫之大數(shù)據(jù)量分頁控件
      1#region 版權(quán)信息
      2/*---------------------------------------------------------------------*
      3// Copyright (C) 2010 http://www.cnblogs.com/huyong
      4// 版權(quán)所有。
      5// 項目 名稱:《Winform通用控件庫》
      6// 文 件 名: UcPageControl.cs
      7// 類 全 名: DotNet.Controls.UcPageControl
      8// 描 述: 分頁控件
      9// 創(chuàng)建 時間: 2010-06-05
      10// 創(chuàng)建人信息: [**** 姓名:胡勇 QQ:80368704 E-Mail:80368704@qq.com *****]
      11*----------------------------------------------------------------------*/
      12#endregion
      13
      14using System;
      15using System.Collections.Generic;
      16using System.ComponentModel;
      17using System.Drawing;
      18using System.Data;
      19using System.Data.SqlClient;
      20using System.Windows.Forms;
      21using DotNet.Common;
      22using DotNet.DBUtility;
      23
      24namespace DotNet.Controls
      25{
      26#region 委托申明
      27///<summary>
      28/// 申明委托
      29///</summary>
      30///<param name="e"></param>
      31///<returns></returns>
      32publicdelegateint EventPagingHandler(EventPagingArg e);
      33#endregion
      34
      35#region 分頁控件
      36///<summary>
      37/// 分頁控件
      38///
      39/// 修改紀(jì)錄(此分頁控件經(jīng)過多次修改,已趨于完美,可放心使用。)
      40/// 2010-12-06 胡勇 對上一條、下一條、首條、末條數(shù)據(jù)導(dǎo)航的隱藏,因?yàn)榭丶旧硪炎隽颂幚怼?br /> 41/// 2010-12-05 胡勇 對分頁控件代碼做了相應(yīng)優(yōu)化
      42/// 2010-06-05 胡勇 創(chuàng)建分頁控件
      43///
      44///<author>
      45///<name>胡勇</name>
      46///<QQ>80368704</QQ>
      47///<Email>80368704@qq.com</Email>
      48///</author>
      49///</summary>
      50 [ToolboxItem(true)]
      51 [DefaultEvent("EventPaging")]
      52 [ToolboxBitmap(typeof(UcPageControl), "DotNet.Controls.Images.UcPageControl.bmp")]
      53 [Description("分頁控件")]
      54publicpartialclass UcPageControl : UserControl
      55 {
      56#region 申明事件
      57///<summary>
      58/// 單擊移動到當(dāng)前頁上一末記錄時發(fā)生
      59///</summary>
      60 [Category("數(shù)據(jù)分頁"), Description("單擊移動到當(dāng)前頁上一末記錄時發(fā)生。"),Browsable(false)]
      61publicevent EventHandler OnBindingNavigatorMovePreviousItemClick;
      62
      63///<summary>
      64/// 單擊移動到當(dāng)前頁第一條記錄時發(fā)生
      65///</summary>
      66 [Category("數(shù)據(jù)分頁"), Description("單擊移動到當(dāng)前頁第一條記錄時發(fā)生。"), Browsable(false)]
      67publicevent EventHandler OnBindingNavigatorMoveFirstItemClick;
      68
      69///<summary>
      70/// 單擊移動到當(dāng)前頁下一條記錄時發(fā)生
      71///</summary>
      72 [Category("數(shù)據(jù)分頁"), Description("單擊移動到當(dāng)前頁下一條記錄時發(fā)生。"), Browsable(false)]
      73publicevent EventHandler OnBindingNavigatorMoveNextItemClick;
      74
      75///<summary>
      76/// 單擊移動到當(dāng)前頁最后一條記錄時發(fā)生
      77///</summary>
      78 [Category("數(shù)據(jù)分頁"), Description("單擊移動到當(dāng)前頁最后一條記錄時發(fā)生。"), Browsable(false)]
      79publicevent EventHandler OnBindingNavigatorMoveLastItemClick;
      80
      81///<summary>
      82/// 單擊各分頁按鈕(上一頁、下一頁、第一頁、最后一頁和轉(zhuǎn)到某頁)時發(fā)生
      83///</summary>
      84 [Category("數(shù)據(jù)分頁"), Description("分頁時發(fā)生。")]
      85publicevent EventPagingHandler EventPaging;
      86#endregion
      87
      88#region 構(gòu)造函數(shù)
      89public UcPageControl()
      90 {
      91 InitializeComponent();
      92 }
      93#endregion
      94
      95#region 屬性
      96
      97privateint _pageSize =50; //每頁顯示記錄數(shù)
      98privateint _nMax =0; //總記錄數(shù)
      99privateint _pageCount =0; //頁數(shù)=總記錄數(shù)/每頁顯示記錄數(shù)
      100privateint _pageCurrent =0; //當(dāng)前頁號
      101
      102///<summary>
      103/// 每頁顯示記錄數(shù)
      104///</summary>
      105 [Category("數(shù)據(jù)分頁"), Description("每頁顯示記錄數(shù)。"), Browsable(false)]
      106publicint PageSize
      107 {
      108get
      109 {
      110return _pageSize;
      111 }
      112set
      113 {
      114 _pageSize = value;
      115 GetPageCount();//頁數(shù)
      116 }
      117 }
      118
      119///<summary>
      120/// 記錄總數(shù)
      121///</summary>
      122 [Category("數(shù)據(jù)分頁"), Description("記錄總數(shù)。"),Browsable(false)]
      123publicint NMax
      124 {
      125get
      126 {
      127return _nMax;
      128 }
      129set
      130 {
      131 _nMax = value;
      132 GetPageCount();
      133 }
      134 }
      135
      136///<summary>
      137/// 頁數(shù)
      138///</summary>
      139 [Category("數(shù)據(jù)分頁"), Description("頁數(shù)。"), Browsable(false)]
      140publicint PageCount
      141 {
      142get
      143 {
      144return _pageCount;
      145 }
      146set
      147 {
      148 _pageCount = value;
      149 }
      150 }
      151
      152///<summary>
      153/// 當(dāng)前頁號
      154///</summary>
      155 [Category("數(shù)據(jù)分頁"), Description("當(dāng)前頁號。"), Browsable(false)]
      156publicint PageCurrent
      157 {
      158get
      159 {
      160return _pageCurrent;
      161 }
      162set
      163 {
      164 _pageCurrent = value;
      165 }
      166 }
      167#endregion
      168
      169#region 方法
      170 [Category("數(shù)據(jù)分頁"), Description("bindingNavigator。"), Browsable(false)]
      171public BindingNavigator ToolBar
      172 {
      173get
      174 {
      175returnthis.bindingNavigator;
      176 }
      177 }
      178
      179///<summary>
      180/// 得到總頁數(shù)
      181///</summary>
      182privatevoid GetPageCount()
      183 {
      184if (this.NMax >0)
      185 {
      186this.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(this.NMax) / Convert.ToDouble(this.PageSize)));
      187 }
      188else
      189 {
      190this.PageCount =0;
      191 }
      192 }
      193
      194///<summary>
      195/// 綁定分頁控件(關(guān)鍵代碼)
      196///</summary>
      197publicvoid Bind()
      198 {
      199if (this.EventPaging !=null)
      200 {
      201this.NMax =this.EventPaging(new EventPagingArg(this.PageCurrent));
      202 }
      203
      204if (this.PageCurrent >this.PageCount)
      205 {
      206this.PageCurrent =this.PageCount;
      207 }
      208if (this.PageCount ==1)
      209 {
      210this.PageCurrent =1;
      211 }
      212 lblPageCount.Text =this.PageCount.ToString();
      213this.lblMaxPage.Text =""+this.NMax.ToString()+"條記錄";
      214this.txtCurrentPage.Text =this.PageCurrent.ToString();
      215
      216if (this.PageCurrent ==1)
      217 {
      218this.btnPrev.Enabled =false;
      219this.btnFirst.Enabled =false;
      220 }
      221else
      222 {
      223 btnPrev.Enabled =true;
      224 btnFirst.Enabled =true;
      225 }
      226
      227if (this.PageCurrent ==this.PageCount)
      228 {
      229this.btnLast.Enabled =false;
      230this.btnNext.Enabled =false;
      231 }
      232else
      233 {
      234 btnLast.Enabled =true;
      235 btnNext.Enabled =true;
      236 }
      237
      238if (this.NMax ==0)
      239 {
      240 btnNext.Enabled =false;
      241 btnLast.Enabled =false;
      242 btnFirst.Enabled =false;
      243 btnPrev.Enabled =false;
      244 }
      245 }
      246
      247#endregion
      248
      249#region 按鈕事件
      250privatevoid btnFirst_Click(object sender, EventArgs e)
      251 {
      252 PageCurrent =1;
      253this.Bind();
      254 }
      255
      256privatevoid btnPrev_Click(object sender, EventArgs e)
      257 {
      258 PageCurrent -=1;
      259if (PageCurrent <=0)
      260 {
      261 PageCurrent =1;
      262 }
      263this.Bind();
      264 }
      265
      266privatevoid btnNext_Click(object sender, EventArgs e)
      267 {
      268this.PageCurrent +=1;
      269if (PageCurrent > PageCount)
      270 {
      271 PageCurrent = PageCount;
      272 }
      273this.Bind();
      274 }
      275
      276privatevoid btnLast_Click(object sender, EventArgs e)
      277 {
      278 PageCurrent = PageCount;
      279this.Bind();
      280 }
      281
      282privatevoid btnGo_Click(object sender, EventArgs e)
      283 {
      284if (this.txtCurrentPage.Text !=null&& txtCurrentPage.Text !="")
      285 {
      286if (Int32.TryParse(txtCurrentPage.Text, out _pageCurrent))
      287 {
      288this.Bind();
      289 }
      290else
      291 {
      292 DialogHelper.ShowErrorMsg("輸入數(shù)字格式錯誤!");
      293 }
      294 }
      295 }
      296
      297privatevoid txtCurrentPage_KeyDown(object sender, KeyEventArgs e)
      298 {
      299if (e.KeyCode == Keys.Enter)
      300 {
      301this.Bind();
      302 }
      303 }
      304
      305privatevoid bindingNavigatorMovePreviousItem_Click(object sender, EventArgs e)
      306 {
      307if(OnBindingNavigatorMovePreviousItemClick !=null)
      308 {
      309 OnBindingNavigatorMovePreviousItemClick(this, null);
      310 }
      311 }
      312
      313privatevoid bindingNavigatorMoveFirstItem_Click(object sender, EventArgs e)
      314 {
      315if (OnBindingNavigatorMoveFirstItemClick !=null)
      316 {
      317 OnBindingNavigatorMoveFirstItemClick(this, null);
      318 }
      319 }
      320
      321privatevoid bindingNavigatorMoveNextItem_Click(object sender, EventArgs e)
      322 {
      323if (OnBindingNavigatorMoveNextItemClick !=null)
      324 {
      325 OnBindingNavigatorMoveNextItemClick(this, null);
      326 }
      327 }
      328
      329privatevoid bindingNavigatorMoveLastItem_Click(object sender, EventArgs e)
      330 {
      331if (OnBindingNavigatorMoveLastItemClick !=null)
      332 {
      333 OnBindingNavigatorMoveLastItemClick(this, null);
      334 }
      335 }
      336#endregion
      337 }
      338#endregion
      339
      340#region 自定義事件數(shù)據(jù)基類
      341///<summary>
      342/// 自定義事件數(shù)據(jù)基類
      343///</summary>
      344publicclass EventPagingArg : EventArgs
      345 {
      346privateint _intPageIndex;
      347public EventPagingArg(int PageIndex)
      348 {
      349 _intPageIndex = PageIndex;
      350 }
      351 }
      352#endregion
      353
      354#region 數(shù)據(jù)源提供(PageData)
      355///<summary>
      356/// 數(shù)據(jù)源提供
      357///</summary>
      358publicclass PageData
      359 {
      360 DataSet ds =null;
      361privateint _PageSize =50; //分頁大小
      362privateint _PageIndex =1; //當(dāng)前頁
      363privateint _PageCount =0; //總頁數(shù)
      364privateint _TotalCount =0; //總記錄數(shù)
      365privatestring _QueryFieldName ="*"; //表字段FieldStr
      366privatebool _isQueryTotalCounts =true; //是否查詢總的記錄條數(shù)
      367privatestring _TableName =string.Empty; //表名
      368privatestring _OrderStr =string.Empty; //排序_SortStr
      369privatestring _QueryCondition =string.Empty; //查詢的條件 RowFilter
      370privatestring _PrimaryKey =string.Empty; //主鍵
      371
      372///<summary>
      373/// 是否查詢總的記錄條數(shù)
      374///</summary>
      375publicbool IsQueryTotalCounts
      376 {
      377get { return _isQueryTotalCounts; }
      378set { _isQueryTotalCounts = value; }
      379 }
      380
      381///<summary>
      382/// 分頁大小(每頁顯示多少條數(shù)據(jù))
      383///</summary>
      384publicint PageSize
      385 {
      386get
      387 {
      388return _PageSize;
      389
      390 }
      391set
      392 {
      393 _PageSize = value;
      394 }
      395 }
      396
      397///<summary>
      398/// 當(dāng)前頁
      399///</summary>
      400publicint PageIndex
      401 {
      402get
      403 {
      404return _PageIndex;
      405 }
      406set
      407 {
      408 _PageIndex = value;
      409 }
      410 }
      411
      412///<summary>
      413/// 總頁數(shù)
      414///</summary>
      415publicint PageCount
      416 {
      417get
      418 {
      419return _PageCount;
      420 }
      421 }
      422
      423///<summary>
      424/// 總記錄數(shù)
      425///</summary>
      426publicint TotalCount
      427 {
      428get
      429 {
      430return _TotalCount;
      431 }
      432 }
      433
      434///<summary>
      435/// 表名或視圖名
      436///</summary>
      437publicstring TableName
      438 {
      439get
      440 {
      441return _TableName;
      442 }
      443set
      444 {
      445 _TableName = value;
      446 }
      447 }
      448
      449///<summary>
      450/// 表字段FieldStr
      451///</summary>
      452publicstring QueryFieldName
      453 {
      454get
      455 {
      456return _QueryFieldName;
      457 }
      458set
      459 {
      460 _QueryFieldName = value;
      461 }
      462 }
      463
      464///<summary>
      465/// 排序字段
      466///</summary>
      467publicstring OrderStr
      468 {
      469get
      470 {
      471return _OrderStr;
      472 }
      473set
      474 {
      475 _OrderStr = value;
      476 }
      477 }
      478
      479///<summary>
      480/// 查詢條件
      481///</summary>
      482publicstring QueryCondition
      483 {
      484get
      485 {
      486return _QueryCondition;
      487 }
      488set
      489 {
      490 _QueryCondition = value;
      491 }
      492 }
      493
      494///<summary>
      495/// 主鍵
      496///</summary>
      497publicstring PrimaryKey
      498 {
      499get
      500 {
      501return _PrimaryKey;
      502 }
      503set
      504 {
      505 _PrimaryKey = value;
      506 }
      507 }
      508
      509///<summary>
      510/// 得到分頁數(shù)據(jù)
      511///</summary>
      512///<param name="connectionstring">連接字符串</param>
      513///<returns>DataSet</returns>
      514public DataSet QueryDataTable(string connectionstring)
      515 {
      516 SqlParameter[] parameters = {
      517new SqlParameter("@Tables", SqlDbType.VarChar, 255),
      518new SqlParameter("@PrimaryKey" , SqlDbType.VarChar , 255),
      519new SqlParameter("@Sort", SqlDbType.VarChar , 255),
      520new SqlParameter("@CurrentPage", SqlDbType.Int ),
      521new SqlParameter("@PageSize", SqlDbType.Int ),
      522new SqlParameter("@Fields", SqlDbType.VarChar, 255),
      523new SqlParameter("@Filter", SqlDbType.VarChar, 1000),
      524new SqlParameter("@Group" , SqlDbType.VarChar, 1000)
      525 };
      526 parameters[0].Value = _TableName;
      527 parameters[1].Value = _PrimaryKey;
      528 parameters[2].Value = _OrderStr;
      529 parameters[3].Value = PageIndex;
      530 parameters[4].Value = PageSize;
      531 parameters[5].Value =_QueryFieldName;
      532 parameters[6].Value = _QueryCondition;
      533 parameters[7].Value =string.Empty;
      534 ds =null;
      535 ds =new DataSet();
      536 ds = DbHelperSQL.RunProcedure(connectionstring, "uspDividePage", parameters, "tbPageData");
      537
      538if (_isQueryTotalCounts)
      539 {
      540 _TotalCount = GetTotalCount(connectionstring);
      541 }
      542
      543if (_TotalCount ==0)
      544 {
      545 _PageIndex =0;
      546 _PageCount =0;
      547 }
      548else
      549 {
      550 _PageCount = _TotalCount % _PageSize ==0? _TotalCount / _PageSize : _TotalCount / _PageSize +1;
      551
      552if (_PageIndex > _PageCount)
      553 {
      554 _PageIndex = _PageCount;
      555 parameters[4].Value = _PageSize;
      556 ds = QueryDataTable(connectionstring);
      557 }
      558 }
      559
      560return ds;
      561 }
      562
      563///<summary>
      564/// 得到總的記錄數(shù)
      565///</summary>
      566///<param name="connectionstring">連接字符串</param>
      567///<returns>總的記錄數(shù)</returns>
      568publicint GetTotalCount(string connectionstring)
      569 {
      570string strSql =" select count(1) from "+_TableName;
      571
      572if (_QueryCondition !=string.Empty)
      573 {
      574 strSql +=" where "+ _QueryCondition;
      575 }
      576
      577return Convert.ToInt32(DbHelperSQL.GetSingle(strSql.ToString(), connectionstring));
      578 }
      579 }
      580#endregion
      581}
      582

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        第 1 樓 山西省長治市 網(wǎng)友 客人 發(fā)表于: 2011/7/1 10:28:44
        什么東東啊啊

        支持( 0 ) 蓋樓(回復(fù))

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)