分页显示

  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的分页显示。
都是先把全部数据集合查出来,再构造临时显示的集合。因为表格的结构比较复杂,用到了虚表模式。

posted @ 2013-07-18 22:13  太一吾鱼水  阅读(542)  评论(0编辑  收藏  举报