只是解决DataGridview刷新慢的办法.
如果要考虑效率,还是结合分页的"存储过程"比较好,只是变通了一下。
1 #región 数据处理
2 /// <resumen>
3 /// 得到期初数据
4 /// </summary>
5 getFillDateset () vacío privado
6 {
7 intento
8 {
9 //每页显示数
10 tamaño de página = 10;
11 //得到最大记录数
12 maxRec = dtSource.Rows.Count;
13 //共有多少页
14 pageCount = (maxRec / pageSize);
15 //取余数
16 si ((maxRec % tamaño de página) > 0)
17 {
18 recuento de páginas++;
19 }
20 //默认第一页
21 página actual = 1;
22 recNo = 0;
23 CargarPágina();
24 }
25 capturas
26 {
27 }
28 }
29
30
31 /// <resumen>
32 /// 判断是否数据已经加载
33 /// </summary>
34 /// <devoluciones></devoluciones>
35 bool privado CheckFillButton()
36 {
37 si (tamaño de página == 0) devuelve falso;
38 más devuelven verdadero;
39 }
40
41 /// <resumen>
42 /// 取DataTable的数据
43 /// </summary>
44 LoadPage vacío privado()
45 {
46 int inicioRec;
47 int finRec;
48 Tabla de datos dtTemp;
49
50
51 dtTemp = dtSource.Clone();
52 si (página actual == número de páginas) endRec = maxRec;
53 más endRec = tamaño de página * página actual;
54 inicioRec = recNo;
55 para (int i = startRec; i < endRec; i++)
56 {
57 dtTemp.ImportRow(dtSource.Rows[i]);
58 recNo++;
59 }
60 this.dataGridView1.DataSource = dtTemp;
61 }
62
63 /// <resumen>
64 /// 分页事件(取各个按键的Tag值)
65 /// </summary>
66 /// <param nombre="remitente"></param>
67 /// <param nombre="e"></param>
68 página de cambio nula privada (remitente del objeto, EventArgs e)
69 {
70 si (!CheckFillButton()) regresa;
71 int myint = Convert.ToInt16((string)(remitente como botón).Tag);
72 interruptor (myint)
73 {
74 caso 1:
75 si (página actual == 1)
76 {
77 MessageBox.Show("¡La primera página ahora!");
78 regresan;
79
80 }
81 página actual = 1;
82 recNo = 0;
83 CargarPágina();
84 descanso;
85 caso 2:
86 página actual++;
87 si (Página actual > Número de páginas)
88 {
89 página actual = número de páginas;
90 si (recNo == maxRec)
91 {
92 MessageBox.Show("¡La última página ahora!");
93 regresan;
94 }
95 más
96 recNo = tamaño de página * (página actual + 1);
97 }
98 CargarPágina();
99 descanso;
100 caso 3:
101 si (página actual == número de páginas)
102 recNo = tamaño de página * (página actual - 2);
103 página actual--;
104 si (página actual < 1)
105 {
106 MessageBox.Show("¡La primera página ahora!");
107 página actual = 1;
108 retorno;
109 }
110 más
111 recNo = tamaño de página * (página actual - 1);
112
113 CargarPágina();
114 descanso;
115
116 caso 4:
117 si (!CheckFillButton()) regresa;
118 si (recNo == maxRec)
119 {
120 MessageBox.Show("¡La última página ahora!");
121 retorno;
122 }
123 PáginaActual = Número de páginas;
124 recNo = tamaño de página * (página actual - 1);
125 CargarPágina();
126 descanso;
127 }
128
129 }
130
131 #regiónfinal
http://www.cnblogs.com/azhai/archive/2006/09/18/507624.html