Il s'agit d'une application DataGridview.
如果要考虑效率,还是结合分页的"存储过程"比较好,只是变通了一下。
1 #region 数据处理
2 /// <résumé>
3 /// 得到期初数据
4 /// </summary>
5 vide privé getFillDateset()
6 {
7 essayer
8 {
9 //每页显示数
10 pagesTaille = 10 ;
11 //得到最大记录数
12 maxRec = dtSource.Rows.Count ;
13 //共有多少页
14 pageCount = (maxRec / pageSize);
15 //取余数
16 si ((maxRec % pageSize) > 0)
17 {
18 pagesCount++ ;
19 }
20 //默认第一页
21 Page actuelle = 1 ;
22 numéro d'enregistrement = 0 ;
23 LoadPage();
24 }
25 prises
26 {
27 }
28 }
29
30
31 /// <résumé>
32 /// 判断是否数据已经加载
33 /// </summary>
34 /// <retours></retours>
35 booléens privés CheckFillButton()
36 {
37 if (pageSize == 0) renvoie false ;
38 sinon renvoie vrai ;
39 }
40
41 /// <résumé>
42 /// 取DataTable的数据
43 /// </summary>
44 vide privé LoadPage()
45 {
46 int startRec;
47 int finRec ;
48 DataTabledtTemp ;
49
50
51 dtTemp = dtSource.Clone();
52 si (currentPage == pageCount) endRec = maxRec ;
53 sinon endRec = pageSize * currentPage;
54 startRec = recNo;
55 pour (int i = startRec; i < endRec; i++)
56 {
57 dtTemp.ImportRow(dtSource.Rows[i]);
58 recNo++ ;
59 }
60 this.dataGridView1.DataSource = dtTemp ;
61 }
62
63 /// <résumé>
64 /// 分页事件(取各个按键的Tag值)
65 /// </summary>
66 /// <param name="expéditeur"></param>
67 /// <param name="e"></param>
68 page de changement de vide privé (expéditeur d'objet, EventArgs e)
69 {
70 si (!CheckFillButton()) return ;
71 int myint = Convert.ToInt16((string)(expéditeur en tant que Button).Tag);
72 commutateur (monint)
73 {
74 cas 1 :
75 si (pageactuelle == 1)
76 {
77 MessageBox.Show("La première page maintenant!");
78 retour ;
79
80 }
81 Page actuelle = 1 ;
82 numéro d'enregistrement = 0 ;
83 LoadPage();
84 pause;
85 cas 2 :
86Pageactuelle++;
87 si (currentPage > pageCount)
88 {
89 PageActuelle = nombre de pages ;
90 si (recNo == maxRec)
91 {
92 MessageBox.Show("La dernière page maintenant!");
93 retour ;
94 }
95 autres
96 recNo = pageSize * (currentPage + 1);
97 }
98 LoadPage();
99 pause;
100 cas 3 :
101 si (currentPage == pageCount)
102 recNo = pageSize * (currentPage - 2);
103PageActuelle--;
104 si (pageactuelle < 1)
105 {
106 MessageBox.Show("La première page maintenant!");
107Pageactuelle = 1 ;
108 retour ;
109 }
110 autres
111 recNo = pageSize * (currentPage - 1);
112
113 LoadPage();
114 pause;
115
116 cas 4 :
117 if (!CheckFillButton()) return;
118 si (recNo == maxRec)
119 {
120 MessageBox.Show("La dernière page maintenant!");
121 retour ;
122 }
123 PageActuelle = nombre de pages ;
124 recNo = pageSize * (currentPage - 1);
125 LoadPage();
126 pause ;
127 }
128
129 }
130
131 #endregion
http://www.cnblogs.com/azhai/archive/2006/09/18/507624.html