只是解决DataGridview快速慢的办法。
如果要考虑效率,还是结合分页的“存储过程”比较好,只是改变通关方式。
1 #region 数据处理
2 /// <摘要>
3 /// 获取期初数据
4 /// </摘要>
5 私有无效 getFillDateset()
6 {
7 尝试
8 {
9 // 每页显示数字
10 页面大小 = 10;
11 //获得最大记录数
12 maxRec = dtSource.Rows.Count;
13 //共有多少页
14 pageCount = (maxRec / pageSize);
15 //取余数
16 if ((maxRec % pageSize) > 0)
17{
18 页数++;
19}
20 //默认第一页
21 当前页=1;
22 记录号=0;
23 加载页面();
24}
25 捕获
26{
27}
28}
29
30
31 /// <摘要>
32 /// 判断数据是否已经加载
33 /// </摘要>
34 /// <返回></返回>
35 private bool CheckFillButton()
36{
37 if (pageSize == 0) 返回 false;
38 else 返回true;
39}
40
41 /// <摘要>
42 /// 获取DataTable的数据
43 /// </摘要>
44 私有无效 LoadPage()
45{
46 int 开始记录;
47 int结束记录;
48 数据表 dtTemp;
49
50
51 dtTemp = dtSource.Clone();
52 if (currentPage == pageCount) endRec = maxRec;
53 否则 endRec = pageSize * currentPage;
54 开始记录=记录号;
55 for (int i = startRec; i < endRec; i++)
56{
57 dtTemp.ImportRow(dtSource.Rows[i]);
58 recNo++;
59}
60 this.dataGridView1.DataSource = dtTemp;
61}
62
63 /// <摘要>
64 /// 分页事件(取各个节点的标签值)
65 /// </摘要>
66 /// <参数名称=“发件人”></参数>
67 /// <参数名称=“e”></参数>
68 private void changepage(对象发送者,EventArgs e)
69{
70 if (!CheckFillButton()) 返回;
71 int myint = Convert.ToInt16((string)(sender as Button).Tag);
72 开关(myint)
73{
74 案例1:
75 if (当前页 == 1)
76{
77 MessageBox.Show("现在是第一页!");
78 回归;
79
80}
81 当前页=1;
82 记录号 = 0;
83 加载页面();
84 打破;
85 案例2:
86 当前页面++;
87 if (当前页 > 页数)
88{
89 currentPage = 页数;
90 if (recNo == maxRec)
91{
92 MessageBox.Show("现在是最后一页了!");
93返回;
94}
95 其他
96 recNo = pageSize * (currentPage + 1);
97}
98 加载页面();
99 打破;
100案例3:
101 if (当前页 == 页数)
102 记录编号 = 页大小 * (当前页 - 2);
103 当前页面--;
104 if (当前页 < 1)
105 {
106 MessageBox.Show("现在是第一页!");
107 当前页=1;
108返回;
109}
110 其他
111 recNo = pageSize * (当前页 - 1);
112
113 加载页面();
114 打破;
115
116案例4:
117 if (!CheckFillButton()) 返回;
118 if (recNo == maxRec)
119 {
120 MessageBox.Show("现在是最后一页了!");
121返回;
122}
123 currentPage = 页数;
124 recNo = pageSize * (当前页 - 1);
125 加载页面();
126 打破;
127}
128
129}
130
第131章
http://www.cnblogs.com/azhai/archive/2006/09/18/507624.html