zoukankan      html  css  js  c++  java
  • 分页显示

      1         #region 分页功能变量和控件
      2         private int mCurrent; //当前记录行 
      3         private int mMax; //总记录数
      4         private int mPageCount; //页数=总记录数/每页显示行数
      5         private int mPageCurrent; //当前页号
      6         private int mPageSize; //每页显示行数
      7 
      8         private System.Windows.Forms.ToolStripButton btnFirstPage;
      9         private System.Windows.Forms.ToolStripButton btnPrePage;
     10         private System.Windows.Forms.ToolStripTextBox txtCurrentPage;
     11         private System.Windows.Forms.ToolStripLabel lblPageCount;
     12         private System.Windows.Forms.ToolStripButton btnNextPage;
     13         private System.Windows.Forms.ToolStripButton btnLastPage;
     14         private System.Windows.Forms.BindingNavigator dataNavigator;
     15         #endregion
     16 
     17 
     18         #region 分页控制相关函数
     19 
     20         /// <summary>
     21         /// 导航器初始化
     22         /// </summary>
     23         private void InitDataSet()
     24         {
     25             try
     26             {
     27                 mPageSize = 15;
     28                 mMax = dt.Rows.Count;
     29                 mPageCount = mMax / mPageSize;
     30                 if ((mMax % mPageSize) > 0)
     31                     mPageCount++;
     32                 mPageCurrent = 1;
     33                 mCurrent = 0;
     34                 txtCurrentPage.Text = mPageCurrent.ToString();
     35                 lblPageCount.Text = "/" + mPageCount.ToString();
     36 
     37                 SetNavigatorState();
     38                 LoadData();
     39             }
     40             catch
     41             {
     42             }
     43         }
     44 
     45         /// <summary>
     46         /// 加载
     47         /// </summary>
     48         private void LoadData()
     49         {
     50             int nStartPos = 0;
     51             int nEndPos = mMax;
     52             DataTable dtTemp = dt.Clone();
     53             if (mPageCurrent == mPageCount)
     54             {
     55                 nEndPos = mMax;
     56             }
     57             else
     58             {
     59                 nEndPos = mPageSize * mPageCurrent;
     60             }
     61             nStartPos = mCurrent;
     62             for (int i = nStartPos; i < nEndPos; i++)
     63             {
     64                 dtTemp.ImportRow(dt.Rows[i]);
     65                 mCurrent++;
     66             }
     67             //gridControl1.DataSource = null;
     68             //gridControl1.DataSource = dtTemp;
     69             BindingSource binding = new BindingSource();
     70             binding.DataSource = dtTemp;
     71             this.gridControl1.DataSource = binding;
     72             TreeOperation.SetGridViewStyle(this.gridView1);
     73 
     74         }
     75 
     76         /// <summary>
     77         /// 控制导航器状态
     78         /// </summary>
     79         private void SetNavigatorState()
     80         {
     81             if (mPageCount > 1)
     82             {
     83                 if (mPageCurrent == 1)
     84                 {
     85                     this.btnFirstPage.Enabled = false;
     86                     this.btnPrePage.Enabled = false;
     87                     this.btnNextPage.Enabled = true;
     88                     this.btnLastPage.Enabled = true;
     89                 }
     90                 else if (mPageCurrent == mPageCount)
     91                 {
     92                     this.btnFirstPage.Enabled = true;
     93                     this.btnPrePage.Enabled = true;
     94                     this.btnNextPage.Enabled = false;
     95                     this.btnLastPage.Enabled = false;
     96                 }
     97                 else
     98                 {
     99                     this.btnFirstPage.Enabled = true;
    100                     this.btnPrePage.Enabled = true;
    101                     this.btnNextPage.Enabled = true;
    102                     this.btnLastPage.Enabled = true;
    103                 }
    104             }
    105             else if (mPageCount <= 1)
    106             {
    107                 this.btnFirstPage.Enabled = false;
    108                 this.btnPrePage.Enabled = false;
    109                 this.btnNextPage.Enabled = false;
    110                 this.btnLastPage.Enabled = false;
    111             }
    112         }
    113 
    114         /// <summary>
    115         /// 页面计算
    116         /// </summary>
    117         /// <param name="sender"></param>
    118         /// <param name="e"></param>
    119         private void dataNavigator_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    120         {
    121             switch (e.ClickedItem.Name)
    122             {
    123                 case "btnFirstPage":
    124                     mPageCurrent = 1;
    125                     mCurrent = mPageSize * (mPageCurrent - 1);
    126                     LoadData();
    127                     txtCurrentPage.Text = mPageCurrent.ToString();
    128                     lblPageCount.Text = "/" + mPageCount.ToString();
    129                     this.SetNavigatorState();
    130                     break;
    131                 case "btnNextPage":
    132                     mPageCurrent++;
    133                     mCurrent = mPageSize * (mPageCurrent - 1);
    134                     LoadData();
    135                     txtCurrentPage.Text = mPageCurrent.ToString();
    136                     lblPageCount.Text = "/" + mPageCount.ToString();
    137                     this.SetNavigatorState();
    138                     break;
    139                 case "btnPrePage":
    140                     mPageCurrent--;
    141                     mCurrent = mPageSize * (mPageCurrent - 1);
    142                     LoadData();
    143                     txtCurrentPage.Text = mPageCurrent.ToString();
    144                     lblPageCount.Text = "/" + mPageCount.ToString();
    145                     this.SetNavigatorState();
    146                     break;
    147                 case "btnLastPage":
    148                     mPageCurrent = mPageCount;
    149                     mCurrent = mPageSize * (mPageCurrent - 1);
    150                     LoadData();
    151                     txtCurrentPage.Text = mPageCurrent.ToString();
    152                     lblPageCount.Text = "/" + mPageCount.ToString();
    153                     this.SetNavigatorState();
    154                     break;
    155                 default:
    156                     return;
    157 
    158             }
    159         }
    160         #endregion
    161  public static void SetGridViewStyle(GridView view)
    162         {
    163             view.OptionsBehavior.Editable = false;
    164             view.OptionsView.RowAutoHeight = true;
    165 
    166             for (int i = 0; i < view.Columns.Count; i++)
    167             {
    168                 view.Columns[i].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
    169                 view.Columns[i].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
    170             }
    171         }

    借鉴此实现了Flexcell的分页显示。
    都是先把全部数据集合查出来,再构造临时显示的集合。因为表格的结构比较复杂,用到了虚表模式。

  • 相关阅读:
    vsftp部署和优化错误
    部署和调优 1.6 vsftp部署和优化-2
    部署和调优 1.5 vsftp部署和优化-1
    部署和调优 1.3 pureftp部署和优化-2
    Linux一些常用软件的源码安装
    SecureCrt 利用公匙登录L机取消密码登录。
    利用任务自动上传备份。
    Mysql Too Many Connections问题解决
    Linux ---pptpd部署
    Sed简单入门实例
  • 原文地址:https://www.cnblogs.com/yhlx125/p/3198000.html
Copyright © 2011-2022 走看看